mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Merge
This commit is contained in:
commit
11d9b88faa
@ -4,6 +4,95 @@
|
||||
# for important features/bug fixes.
|
||||
# Also, each release can have new and improved recipes.
|
||||
|
||||
- version: 0.7.27
|
||||
date: 2010-11-05
|
||||
|
||||
new features:
|
||||
- title: "The book list behavior has changed"
|
||||
type: major
|
||||
description: >
|
||||
"Now double clicking on an entry in the book list will open it in the viewer. To edit metadata single click a previously selected entry instead. This is consistent with
|
||||
the usage in most operating systems, so should be most intuitive for new users. Also typing any key no longer starts an edit, instead press F2 (Enter on OS X) to start editing
|
||||
the current cell. Also you now have to double click instead of single clicking the book details panel to open the detailed info dialog for the book."
|
||||
|
||||
- title: "Added a new HTML output format plugin, which converts the input document to a ZIP file. The zip file contains HTML pages suitable for display in a website"
|
||||
|
||||
- title: "Support for iRiver Cover Story and Digma Q600"
|
||||
|
||||
- title: "Add a search button (labelled Go!) to explicitly run a search with the text currently in the quick search box"
|
||||
|
||||
- title: "Add author to the calibre geenrated book jacket"
|
||||
tickets: [7402]
|
||||
|
||||
- title: "Add the title of the destination book to the merge dialog warning message"
|
||||
|
||||
- title: "calibre-server: Make auto reload control separate from --devlop with a new command line option --auto-reload"
|
||||
|
||||
bug fixes:
|
||||
- title: "Fix book details panel not being updated after a delete-merge"
|
||||
tickets: [7426]
|
||||
|
||||
- title: "Fix clicking in the search box launches a search if you have search as you type enabled"
|
||||
tickets: [7425]
|
||||
|
||||
- title: "Use a browser widget to display book details for more robustness and better performance when vieweing large HTML comments"
|
||||
|
||||
- title: "Fix cover browser not updated after copy to library and delete"
|
||||
tickets: [7416]
|
||||
|
||||
- title: "Fix regression that broke sending non calibre EPUB files to the iPad. Also handle failure to set cover in iTunes gracefully"
|
||||
tickets: [7356]
|
||||
|
||||
- title: "News download: Workaround lack of thread safety in python mechanize, causing corrupted network packets (degrading network performance) on Ubuntu Maverick 64bit kernels"
|
||||
|
||||
- title: "Convert comments to HTML for book details panel in separate thread to make scrolling through the book list faster when large comments are present"
|
||||
|
||||
- title: "calibre-server: Fix regression that broke --daemonize"
|
||||
|
||||
- title: "EPUB Input: Handle ncx files that have <navpoint> elements with no content correctly."
|
||||
tickets: [7396]
|
||||
|
||||
- title: "SNBOutput: Fixed a bug in handling pre tag"
|
||||
|
||||
- title: "MOBI Output: Don't ignore hidden anchors."
|
||||
tickets: [7384]
|
||||
|
||||
- title: "Fix switching libraries and generating a catalog could generate a catalog for the wrong library"
|
||||
|
||||
- title: "MOBI Output: Fix regression that broke conversion of anchors inside superscripts/subscripts."
|
||||
tickets: [7368]
|
||||
|
||||
- title: "Content server: Fix various minor bugs"
|
||||
tickets: [7379, 6768, 7354]
|
||||
|
||||
- title: "Amazon metadata download plugin: Make it more robust and add option to auto convert HTML to text"
|
||||
|
||||
- title: "Re-arrange send to device menu to make it harder to accidentally trigger the send and delete actions"
|
||||
|
||||
|
||||
improved recipes:
|
||||
- Danas
|
||||
- Fudzilla
|
||||
- Zeit Online
|
||||
- New York Times
|
||||
- Mediapart
|
||||
|
||||
new recipes:
|
||||
- title: "Ynet and Calcalist"
|
||||
author: "marbs"
|
||||
|
||||
- title: "El Faro de Vigo"
|
||||
author: "Jefferson Frantz"
|
||||
|
||||
- title: "Clic_RBS"
|
||||
author: "avoredo"
|
||||
|
||||
- title: "Correio da Manha"
|
||||
author: "jmst"
|
||||
|
||||
- title: "Rue89"
|
||||
author: "Louis Gesbert"
|
||||
|
||||
- version: 0.7.26
|
||||
date: 2010-10-30
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>..:: calibre library ::.. {title}</title>
|
||||
<title>..:: calibre {library} ::.. {title}</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=100" />
|
||||
<link rel="icon" type="image/x-icon" href="http://calibre-ebook.com/favicon.ico" />
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
<div class="area">
|
||||
<div class="bubble">
|
||||
<p><a href="{prefix}/browse" title="Return to top level"
|
||||
>→ home ←</a></p>
|
||||
>→ {home} ←</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="nav-container">
|
||||
@ -80,7 +80,7 @@
|
||||
<form name="search_form" action="{prefix}/browse/search" method="get" accept-charset="UTF-8">
|
||||
<input value="{initial_search}" type="text" title="Search" name="query"
|
||||
class="search_input" />
|
||||
<input type="submit" value="Search" title="Search" alt="Search" />
|
||||
<input type="submit" value="{Search}" title="{Search}" alt="{Search}" />
|
||||
</form>
|
||||
</div>
|
||||
<div> </div>
|
||||
|
@ -211,3 +211,9 @@ generate_cover_title_font = None
|
||||
# Absolute path to a TTF font file to use as the font for the footer in the
|
||||
# default cover
|
||||
generate_cover_foot_font = None
|
||||
|
||||
|
||||
# Behavior of doubleclick on the books list. Choices:
|
||||
# open_viewer, do_nothing, edit_cell. Default: open_viewer.
|
||||
# Example: doubleclick_on_library_view = 'do_nothing'
|
||||
doubleclick_on_library_view = 'open_viewer'
|
||||
|
BIN
resources/images/news/siol.png
Normal file
BIN
resources/images/news/siol.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 423 B |
@ -41,6 +41,15 @@
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*
|
||||
** Author
|
||||
*/
|
||||
.cbj_author {
|
||||
font-size: medium;
|
||||
text-align: center;
|
||||
margin-bottom: 1ex;
|
||||
}
|
||||
|
||||
/*
|
||||
** Table containing Series, Publication Year, Rating and Tags
|
||||
*/
|
||||
|
@ -7,6 +7,7 @@
|
||||
<body>
|
||||
<div class="cbj_banner">
|
||||
<div class="cbj_title">{title}</div>
|
||||
<div class="cbj_author">{author}</div>
|
||||
<table class="cbj_header">
|
||||
<tr class="cbj_series">
|
||||
<td class="cbj_label">{series_label}:</td>
|
||||
|
@ -59,6 +59,9 @@ class Danas(BasicNewsRecipe):
|
||||
,(re.compile(u'\u201d'), lambda match: '”') # right double quotation mark
|
||||
,(re.compile(u'\u201e'), lambda match: '“') # double low-9 quotation mark
|
||||
,(re.compile(u'\u201f'), lambda match: '”') # double high-reversed-9 quotation mark
|
||||
,(re.compile(u'\u00f4'), lambda match: '“') # latin small letter o with circumflex
|
||||
,(re.compile(u'\u00f6'), lambda match: '”') # latin small letter o with dieaeresis
|
||||
,(re.compile(u'\u00e1'), lambda match: ' ' ) # latin small letter a with acute
|
||||
]
|
||||
|
||||
keep_only_tags = [dict(name='div', attrs={'id':'left'})]
|
||||
|
42
resources/recipes/diario_sport.recipe
Normal file
42
resources/recipes/diario_sport.recipe
Normal file
@ -0,0 +1,42 @@
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class DiarioSport(BasicNewsRecipe):
|
||||
title = u'Diario Sport'
|
||||
oldest_article = 2
|
||||
max_articles_per_feed = 75
|
||||
__author__ = 'Jefferson Frantz'
|
||||
description = 'Todas las noticias del Barça y del mundo del deporte en general'
|
||||
timefmt = ' [%d %b, %Y]'
|
||||
language = 'es'
|
||||
no_stylesheets = True
|
||||
|
||||
feeds = [(u'Sport', u'http://feeds.feedburner.com/sport/ultimahora')]
|
||||
|
||||
extra_css = '''
|
||||
h2{font-family: serif; font-size: small; font-weight: bold; color: #000000; text-align: justify}
|
||||
'''
|
||||
|
||||
keep_only_tags = [dict(name='div', attrs={'id':['noticiasMedio']})]
|
||||
|
||||
remove_tags = [
|
||||
dict(name=['object','link','script','ul'])
|
||||
,dict(name='div', attrs={'id':['scrAdSense','herramientas2','participacion','participacion2','bloque1resultados','bloque2resultados','cont_vinyetesAnt','tinta','noticiasSuperior','cintillopublicidad2']})
|
||||
,dict(name='p', attrs={'class':['masinformacion','hora']})
|
||||
,dict(name='a', attrs={'class':["'link'"]})
|
||||
,dict(name='div', attrs={'class':['addthis_toolbox addthis_default_style','firma','pretitularnoticia']})
|
||||
,dict(name='form', attrs={'id':['formularioDeBusquedaAvanzada']})
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
for item in soup.findAll(style=True):
|
||||
del item['style']
|
||||
return soup
|
||||
|
||||
|
||||
def postprocess_html(self, soup, first_fetch):
|
||||
img = soup.find('img',src='/img/videos/mascaravideo.png')
|
||||
if not img is None:
|
||||
img.extract()
|
||||
|
||||
return soup
|
||||
|
@ -1,38 +0,0 @@
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||
|
||||
'''
|
||||
Fetch elektrolese.
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
|
||||
class elektrolese(BasicNewsRecipe):
|
||||
|
||||
title = u'elektrolese'
|
||||
description = 'News about electronic publishing'
|
||||
__author__ = 'Oliver Niesner'
|
||||
use_embedded_content = False
|
||||
timefmt = ' [%a %d %b %Y]'
|
||||
language = 'de'
|
||||
|
||||
oldest_article = 14
|
||||
max_articles_per_feed = 50
|
||||
no_stylesheets = True
|
||||
conversion_options = {'linearize_tables':True}
|
||||
encoding = 'utf-8'
|
||||
|
||||
|
||||
remove_tags_after = [dict(id='comments')]
|
||||
filter_regexps = [r'ad\.doubleclick\.net']
|
||||
|
||||
remove_tags = [dict(name='div', attrs={'class':'bannerSuperBanner'}),
|
||||
dict(id='comments'),
|
||||
dict(id='Navbar1')]
|
||||
|
||||
|
||||
|
||||
feeds = [ (u'elektrolese', u'http://elektrolese.blogspot.com/feeds/posts/default?alt=rss') ]
|
||||
|
||||
|
@ -38,6 +38,7 @@ class LaJornada_mx(BasicNewsRecipe):
|
||||
.loc{font-weight: bold}
|
||||
.carton{text-align: center}
|
||||
.credit{font-weight: bold}
|
||||
.sumario{font-weight: bold; text-align: center}
|
||||
.text{margin-top: 1.4em}
|
||||
p.inicial{display: inline; font-size: xx-large; font-weight: bold}
|
||||
p.s-s{display: inline; text-indent: 0}
|
||||
@ -53,7 +54,10 @@ class LaJornada_mx(BasicNewsRecipe):
|
||||
preprocess_regexps = [
|
||||
(re.compile( r'<div class="inicial">(.*)</div><p class="s-s">'
|
||||
,re.DOTALL|re.IGNORECASE)
|
||||
,lambda match: '<p class="inicial">' + match.group(1) + '</p><p class="s-s">')
|
||||
,lambda match: '<p class="inicial">' + match.group(1) + '</p><p class="s-s">'),
|
||||
(re.compile( r'<q>(.*?)</q>'
|
||||
,re.DOTALL|re.IGNORECASE)
|
||||
,lambda match: '"' + match.group(1) + '"')
|
||||
]
|
||||
|
||||
keep_only_tags = [
|
||||
|
@ -60,7 +60,6 @@ class NYTimes(BasicNewsRecipe):
|
||||
|
||||
|
||||
timefmt = ''
|
||||
needs_subscription = True
|
||||
masthead_url = 'http://graphics8.nytimes.com/images/misc/nytlogo379x64.gif'
|
||||
cover_margins = (18,18,'grey99')
|
||||
|
||||
|
73
resources/recipes/scprint.recipe
Normal file
73
resources/recipes/scprint.recipe
Normal file
@ -0,0 +1,73 @@
|
||||
from calibre.web.feeds.recipes import BasicNewsRecipe, LoginFailed
|
||||
|
||||
class SCPrintMagazine(BasicNewsRecipe):
|
||||
title = u'SC Print Magazine'
|
||||
__author__ = u'Tony Maro'
|
||||
description = u'Last print version of the data security magazine'
|
||||
INDEX = "http://www.scmagazineus.com/issuearchive/"
|
||||
no_stylesheets = True
|
||||
language = 'en'
|
||||
keep_only_tags = [dict(id=['article','review'])]
|
||||
remove_tags = [dict(id=['articlePrintTools','reviewBodyColumn'])]
|
||||
LOG_IN = 'http://www.scmagazineus.com/login/'
|
||||
tags = 'News,SC Magazine'
|
||||
needs_subscription = True
|
||||
|
||||
def parse_index(self):
|
||||
articles = []
|
||||
issuelink = printsections = None
|
||||
|
||||
soup = self.index_to_soup(self.INDEX)
|
||||
sectit = soup.find('div', attrs={'class':'issueArchiveItem'})
|
||||
if sectit is not None:
|
||||
linkt = sectit.find('a')
|
||||
issuelink = linkt['href']
|
||||
imgt = sectit.find('img')
|
||||
self.cover_url = imgt['src']
|
||||
|
||||
if issuelink is not None:
|
||||
issue = self.index_to_soup(issuelink)
|
||||
if issue is not None:
|
||||
printsections = issue.findAll('div',attrs={'class':'PrintSection'})
|
||||
if printsections is not None:
|
||||
for printsection in printsections:
|
||||
onesection = []
|
||||
sectiontitle = printsection.find('h3').contents[0]
|
||||
articlesec = printsection.findAll('div',attrs={'class':'IssueArchiveFormat'})
|
||||
if articlesec is not None:
|
||||
''' got articles '''
|
||||
for onearticle in articlesec:
|
||||
''' process one article '''
|
||||
arttitlet = onearticle.find('h3')
|
||||
if arttitlet is not None:
|
||||
mylink = arttitlet.find('a')
|
||||
if mylink is not None:
|
||||
if mylink.has_key('title'):
|
||||
arttitle = mylink['title']
|
||||
else:
|
||||
arttitle = 'unknown'
|
||||
if mylink.has_key('href'):
|
||||
artlink = mylink['href']
|
||||
artlink = artlink.replace("/article","/printarticle")
|
||||
artlink = artlink.replace("/review","/printreview")
|
||||
deck = onearticle.find('div',attrs={'class':'deck'})
|
||||
if deck is not None:
|
||||
deck = deck.contents[0]
|
||||
onesection.append({'title':arttitle, 'url':artlink, 'description':deck,'date':''})
|
||||
articles.append((sectiontitle, onesection))
|
||||
|
||||
return articles
|
||||
|
||||
def get_browser(self):
|
||||
br = BasicNewsRecipe.get_browser(self)
|
||||
br.open(self.LOG_IN)
|
||||
br.select_form(name='aspnetForm')
|
||||
br['ctl00$ctl00$cphAllPageContent$cphMainContent$SubscriberEasyLoginView1$txtEmail'] = self.username
|
||||
br['ctl00$ctl00$cphAllPageContent$cphMainContent$SubscriberEasyLoginView1$txtPassword'] = self.password
|
||||
raw = br.submit("ctl00$ctl00$cphAllPageContent$cphMainContent$SubscriberEasyLoginView1$btnLogin").read()
|
||||
if 'Logout</a>' not in raw:
|
||||
raise LoginFailed(
|
||||
_('Failed to log in, check your username and password for'
|
||||
' the calibre Periodicals service.'))
|
||||
return br
|
||||
|
55
resources/recipes/siol.recipe
Normal file
55
resources/recipes/siol.recipe
Normal file
@ -0,0 +1,55 @@
|
||||
# coding: utf-8
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2010, BlonG'
|
||||
'''
|
||||
www.siol.si
|
||||
'''
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class Siol(BasicNewsRecipe):
|
||||
title = u'Siol.net'
|
||||
__author__ = u'BlonG'
|
||||
description = "Multimedijski portal z aktualnimi vsebinami, intervjuji, komentarji iz Slovenije in sveta, sportal, trendi, avtomoto, blogos"
|
||||
oldest_article = 3
|
||||
max_articles_per_feed = 20
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
language = 'sl'
|
||||
|
||||
cover_url = 'http://farm4.static.flickr.com/3540/3401820496_c771550fe6.jpg'
|
||||
|
||||
extra_css = '''
|
||||
h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
|
||||
h2{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
|
||||
p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
|
||||
body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
|
||||
'''
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='div', attrs={'id':'idContent'}),
|
||||
]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='span', attrs={'class':'com1'}),
|
||||
dict(name='div', attrs={'class':'relation'}),
|
||||
dict(name='p', attrs={'class':'path'}),
|
||||
dict(name='div', attrs={'class':'clear_r'}),
|
||||
dict(name='div', attrs={'id':'appendix'}),
|
||||
dict(name='div', attrs={'id':'rail'}),
|
||||
dict(name='div', attrs={'id':'div_comments'}),
|
||||
dict(name='div', attrs={'class':'thumbs'}),
|
||||
]
|
||||
|
||||
feeds = [
|
||||
(u'Slovenija', u'http://www.siol.net/rss.aspx?path=Slovenija')
|
||||
,(u'Lokalne novice', u'http://www.siol.net/rss.aspx?path=Slovenija/Lokalne_novice')
|
||||
,(u'EU', u'http://www.siol.net/rss.aspx?path=EU')
|
||||
,(u'Svet', u'http://www.siol.net/rss.aspx?path=Svet')
|
||||
,(u'Gospodarstvo', u'http://www.siol.net/rss.aspx?path=Gospodarstvo')
|
||||
,(u'Sportal', u'http://www.siol.net/rss.aspx?path=Sportal')
|
||||
,(u'Trendi', u'http://www.siol.net/rss.aspx?path=Trendi')
|
||||
,(u'Avtomoto', u'http://www.siol.net/rss.aspx?path=Avtomoto')
|
||||
,(u'Tehnologija', u'http://www.siol.net/rss.aspx?path=Tehnologija')
|
||||
,(u'TV / Film', u'http://www.siol.net/rss.aspx?path=TV')
|
||||
]
|
||||
|
@ -4,7 +4,7 @@ class Tagesschau(BasicNewsRecipe):
|
||||
title = 'Tagesschau'
|
||||
description = 'Nachrichten der ARD'
|
||||
publisher = 'ARD'
|
||||
language = 'de_DE'
|
||||
language = 'de'
|
||||
|
||||
__author__ = 'Florian Andreas Pfaff'
|
||||
oldest_article = 7
|
||||
|
72
resources/recipes/ynet.recipe
Normal file
72
resources/recipes/ynet.recipe
Normal file
@ -0,0 +1,72 @@
|
||||
import re
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
import mechanize
|
||||
|
||||
class AdvancedUserRecipe1283848012(BasicNewsRecipe):
|
||||
description = 'This is a recipe of Ynet.co.il. The recipe opens the article page and clicks on an advertisement to not hurt the sites advertising income.'
|
||||
cover_url = 'http://www.bneiakiva.net/uploads/images/ynet%282%29.jpg'
|
||||
title = u'Ynet'
|
||||
__author__ = 'marbs'
|
||||
language = 'he'
|
||||
extra_css='img {max-width:100%;direction: rtl;} #article{direction: rtl;} div{direction: rtl;} title{direction: rtl; } article_description{direction: rtl; } a.article{direction: rtl; } calibre_feed_description{direction: rtl; } body{direction: ltr;}'
|
||||
remove_attributes = ['width']
|
||||
simultaneous_downloads = 5
|
||||
keep_only_tags =dict(name='div', attrs={'id':'articleContainer'})
|
||||
remove_javascript = True
|
||||
timefmt = '[%a, %d %b, %Y]'
|
||||
oldest_article = 1
|
||||
remove_tags = [dict(name='p', attrs={'text':[' ']})]
|
||||
max_articles_per_feed = 100
|
||||
preprocess_regexps = [
|
||||
(re.compile(r'<p> </p>', re.DOTALL|re.IGNORECASE), lambda match: '')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
soup.html['dir'] = 'rtl'
|
||||
soup.body['dir'] = 'rtl'
|
||||
return soup
|
||||
|
||||
feeds =[(u'\u05d7\u05d3\u05e9\u05d5\u05ea',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss2.xml'),
|
||||
(u'\u05db\u05dc\u05db\u05dc\u05d4',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss6.xml'),
|
||||
(u'\u05e6\u05e8\u05db\u05e0\u05d5\u05ea',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss437.xml'),
|
||||
(u'\u05e1\u05e4\u05d5\u05e8\u05d8',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss3.xml'),
|
||||
(u'\u05ea\u05e8\u05d1\u05d5\u05ea',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss538.xml'),
|
||||
(u'\u05de\u05e2\u05d5\u05e8\u05d1\u05d5\u05ea \u05d5\u05d7\u05d1\u05e8\u05d4',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss3262.xml'),
|
||||
(u'\u05d1\u05e8\u05d9\u05d0\u05d5\u05ea',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss1208.xml'),
|
||||
(u'\u05d9\u05e8\u05d5\u05e7',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss4872.xml'),
|
||||
(u'\u05de\u05d7\u05e9\u05d1\u05d9\u05dd',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss544.xml'),
|
||||
(u'\u05e8\u05db\u05d1', u'http://www.ynet.co.il/Integration/StoryRss550.xml'),
|
||||
(u'\u05ea\u05d9\u05d9\u05e8\u05d5\u05ea',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss598.xml'),
|
||||
(u'\u05d4\u05d5\u05e8\u05d9\u05dd',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss3052.xml'),
|
||||
(u'\u05d0\u05d5\u05db\u05dc',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss975.xml'),
|
||||
(u'\u05d9\u05d4\u05d3\u05d5\u05ea',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss4403.xml'),
|
||||
(u'\u05de\u05d3\u05e2 \u05d5\u05d8\u05d1\u05e2',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss2142.xml'),
|
||||
(u'\u05d9\u05d7\u05e1\u05d9\u05dd',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss3925.xml'),
|
||||
(u'\u05d3\u05e2\u05d5\u05ea',
|
||||
u'http://www.ynet.co.il/Integration/StoryRss194.xml')]
|
||||
|
||||
def print_version(self, url):
|
||||
#remove from here
|
||||
br = BasicNewsRecipe.get_browser()
|
||||
br.open(url)
|
||||
br.follow_link(mechanize.Link(base_url = '', url =url, text = '', tag = 'a', attrs = [{'id':'buzzerATop'}]))
|
||||
#to here to stop supporting ynet...
|
||||
split1 = url.split("-")
|
||||
print_url = 'http://www.ynet.co.il/Ext/Comp/ArticleLayout/CdaArticlePrintPreview/1,2506,L-' + split1[1]
|
||||
return print_url
|
@ -11,7 +11,7 @@ import subprocess, tempfile, os, time
|
||||
from setup import Command, installer_name
|
||||
from setup.build_environment import HOST, PROJECT
|
||||
|
||||
BASE_RSYNC = ['rsync', '-e', 'ssh -x', '-avz', '--delete']
|
||||
BASE_RSYNC = ['rsync', '-avz', '--delete']
|
||||
EXCLUDES = []
|
||||
for x in [
|
||||
'src/calibre/plugins', 'src/calibre/manual', 'src/calibre/trac',
|
||||
@ -42,13 +42,13 @@ class Push(Command):
|
||||
threads = []
|
||||
for host in (
|
||||
r'Owner@winxp:/cygdrive/c/Documents\ and\ Settings/Owner/calibre',
|
||||
'kovid@ox:calibre'
|
||||
'kovid@ox:calibre',
|
||||
r'kovid@win7:/cygdrive/c/Users/kovid/calibre',
|
||||
):
|
||||
rcmd = BASE_RSYNC + EXCLUDES + ['.', host]
|
||||
print '\n\nPushing to:', host, '\n'
|
||||
threads.append(Thread(target=subprocess.check_call, args=(rcmd,)))
|
||||
threads[-1].start()
|
||||
subprocess.check_call(rcmd)
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
|
||||
|
@ -21,8 +21,6 @@ from calibre.constants import iswindows, isosx, islinux, isfreebsd, isfrozen, \
|
||||
filesystem_encoding, plugins, config_dir
|
||||
from calibre.startup import winutil, winutilerror
|
||||
|
||||
import mechanize
|
||||
|
||||
uuid.uuid4() # Imported before PyQt4 to workaround PyQt4 util-linux conflict on gentoo
|
||||
|
||||
if False:
|
||||
@ -269,7 +267,8 @@ def browser(honor_time=True, max_time=2, mobile_browser=False):
|
||||
:param honor_time: If True honors pause time in refresh requests
|
||||
:param max_time: Maximum time in seconds to wait during a refresh request
|
||||
'''
|
||||
opener = mechanize.Browser()
|
||||
from calibre.utils.browser import Browser
|
||||
opener = Browser()
|
||||
opener.set_handle_refresh(True, max_time=max_time, honor_time=honor_time)
|
||||
opener.set_handle_robots(False)
|
||||
opener.addheaders = [('User-agent', ' Mozilla/5.0 (Windows; U; Windows CE 5.1; rv:1.8.1a3) Gecko/20060610 Minimo/0.016' if mobile_browser else \
|
||||
|
@ -2,7 +2,7 @@ __license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
__appname__ = 'calibre'
|
||||
__version__ = '0.7.26'
|
||||
__version__ = '0.7.27'
|
||||
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
||||
|
||||
import re
|
||||
|
@ -1221,12 +1221,19 @@ class ITUNES(DriverBase):
|
||||
return thumb
|
||||
|
||||
if isosx:
|
||||
# The following commands generate an error, but the artwork does in fact
|
||||
# get sent to the device. Seems like a bug in Apple's automation interface?
|
||||
# Could also be a problem with the integrity of the cover data?
|
||||
if lb_added:
|
||||
try:
|
||||
lb_added.artworks[1].data_.set(cover_data)
|
||||
except:
|
||||
if DEBUG:
|
||||
self.log.warning(" iTunes automation interface reported an error"
|
||||
" when adding artwork to '%s' in the iTunes Library" % metadata.title)
|
||||
pass
|
||||
|
||||
if db_added:
|
||||
# The following command generates an error, but the artwork does in fact
|
||||
# get sent to the device. Seems like a bug in Apple's automation interface
|
||||
try:
|
||||
db_added.artworks[1].data_.set(cover_data)
|
||||
except:
|
||||
|
@ -17,15 +17,15 @@ class IRIVER_STORY(USBMS):
|
||||
supported_platforms = ['windows', 'osx', 'linux']
|
||||
|
||||
# Ordered list of supported formats
|
||||
FORMATS = ['epub', 'pdf', 'txt']
|
||||
FORMATS = ['epub', 'fb2', 'pdf', 'djvu', 'txt']
|
||||
|
||||
VENDOR_ID = [0x1006]
|
||||
PRODUCT_ID = [0x4023]
|
||||
PRODUCT_ID = [0x4023, 0x4025]
|
||||
BCD = [0x0323]
|
||||
|
||||
VENDOR_NAME = 'IRIVER'
|
||||
WINDOWS_MAIN_MEM = 'STORY'
|
||||
WINDOWS_CARD_A_MEM = 'STORY'
|
||||
WINDOWS_MAIN_MEM = ['STORY', 'STORY_EB05']
|
||||
WINDOWS_CARD_A_MEM = ['STORY', 'STORY_SD']
|
||||
|
||||
#OSX_MAIN_MEM = 'Kindle Internal Storage Media'
|
||||
#OSX_CARD_A_MEM = 'Kindle Card Storage Media'
|
||||
|
@ -32,7 +32,7 @@ def detect(aBuf):
|
||||
ENCODING_PATS = [
|
||||
re.compile(r'<\?[^<>]+encoding\s*=\s*[\'"](.*?)[\'"][^<>]*>',
|
||||
re.IGNORECASE),
|
||||
re.compile(r'''<meta\s+?[^<>]+?content\s*=\s*['"][^'"]*?charset=([-a-z0-9]+)[^'"]*?['"][^<>]*>''',
|
||||
re.compile(r'''<meta\s+?[^<>]*?content\s*=\s*['"][^'"]*?charset=([-a-z0-9]+)[^'"]*?['"][^<>]*>''',
|
||||
re.IGNORECASE)
|
||||
]
|
||||
ENTITY_PATTERN = re.compile(r'&(\S+?);')
|
||||
|
@ -144,7 +144,10 @@ class DocAnalysis(object):
|
||||
|
||||
# Normalize the histogram into percents
|
||||
totalLines = len(self.lines)
|
||||
if totalLines > 0:
|
||||
h = [ float(count)/totalLines for count in hRaw ]
|
||||
else:
|
||||
h = []
|
||||
#print "\nhRaw histogram lengths are: "+str(hRaw)
|
||||
#print " percents are: "+str(h)+"\n"
|
||||
|
||||
|
@ -5,7 +5,9 @@ __docformat__ = 'restructuredtext en'
|
||||
|
||||
import os, re, shutil
|
||||
|
||||
from os.path import dirname, abspath, relpath, exists
|
||||
from calibre.utils import zipfile
|
||||
|
||||
from os.path import dirname, abspath, relpath, exists, basename
|
||||
|
||||
from lxml import etree
|
||||
from templite import Templite
|
||||
@ -37,7 +39,9 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
help=_('Template used for the generation of the html contents of the book instead of the default file')),
|
||||
|
||||
OptionRecommendation(name='extract_to',
|
||||
help=_('Extract the contents of the generated ZIP file to the directory of the generated ZIP file')
|
||||
help=_('Extract the contents of the generated ZIP file to the '
|
||||
'specified directory. WARNING: The contents of the directory '
|
||||
'will be deleted.')
|
||||
),
|
||||
])
|
||||
|
||||
@ -70,7 +74,7 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
def generate_html_toc(self, oeb_book, ref_url, output_dir):
|
||||
root = self.generate_toc(oeb_book, ref_url, output_dir)
|
||||
return etree.tostring(root, pretty_print=True, encoding='utf-8',
|
||||
xml_declaration=True)
|
||||
xml_declaration=False)
|
||||
|
||||
def convert(self, oeb_book, output_path, input_plugin, opts, log):
|
||||
|
||||
@ -98,9 +102,9 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
self.opts = opts
|
||||
meta = EasyMeta(oeb_book.metadata)
|
||||
|
||||
tempdir = PersistentTemporaryDirectory()
|
||||
tempdir = os.path.realpath(PersistentTemporaryDirectory())
|
||||
output_file = os.path.join(tempdir,
|
||||
os.path.basename(re.sub(r'\.zip', '', output_path)+'.html'))
|
||||
basename(re.sub(r'\.zip', '', output_path)+'.html'))
|
||||
output_dir = re.sub(r'\.html', '', output_file)+'_files'
|
||||
|
||||
if not exists(output_dir):
|
||||
@ -119,7 +123,8 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
tocUrl = relpath(output_file, dirname(output_file))
|
||||
t = templite.render(has_toc=bool(oeb_book.toc.count()),
|
||||
toc=html_toc, meta=meta, nextLink=nextLink,
|
||||
tocUrl=tocUrl, cssLink=cssLink)
|
||||
tocUrl=tocUrl, cssLink=cssLink,
|
||||
firstContentPageLink=nextLink)
|
||||
f.write(t)
|
||||
|
||||
with CurrentDir(output_dir):
|
||||
@ -146,11 +151,13 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
head_content = etree.tostring(head, pretty_print=True, encoding='utf-8')
|
||||
head_content = re.sub(r'\<\/?head.*\>', '', head_content)
|
||||
head_content = re.sub(re.compile(r'\<style.*\/style\>', re.M|re.S), '', head_content)
|
||||
head_content = re.sub(r'<(title)([^>]*)/>', r'<\1\2></\1>', head_content)
|
||||
|
||||
# get & clean HTML <BODY>-data
|
||||
body = root.xpath('//h:body', namespaces={'h': 'http://www.w3.org/1999/xhtml'})[0]
|
||||
ebook_content = etree.tostring(body, pretty_print=True, encoding='utf-8')
|
||||
ebook_content = re.sub(r'\<\/?body.*\>', '', ebook_content)
|
||||
ebook_content = re.sub(r'<(div|a|span)([^>]*)/>', r'<\1\2></\1>', ebook_content)
|
||||
|
||||
# generate link to next page
|
||||
if item.spine_position+1 < len(oeb_book.spine):
|
||||
@ -168,6 +175,7 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
|
||||
cssLink = relpath(abspath(css_path), dir)
|
||||
tocUrl = relpath(output_file, dir)
|
||||
firstContentPageLink = oeb_book.spine[0].href
|
||||
|
||||
# render template
|
||||
templite = Templite(template_html_data)
|
||||
@ -176,7 +184,8 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
prevLink=prevLink, nextLink=nextLink,
|
||||
has_toc=bool(oeb_book.toc.count()), toc=toc,
|
||||
tocUrl=tocUrl, head_content=head_content,
|
||||
meta=meta, cssLink=cssLink)
|
||||
meta=meta, cssLink=cssLink,
|
||||
firstContentPageLink=firstContentPageLink)
|
||||
|
||||
# write html to file
|
||||
with open(path, 'wb') as f:
|
||||
@ -184,7 +193,8 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
item.unload_data_from_memory(memory=path)
|
||||
|
||||
zfile = ZipFile(output_path, "w")
|
||||
zfile.add_dir(output_dir)
|
||||
zfile.add_dir(output_dir, basename(output_dir))
|
||||
zfile.write(output_file, basename(output_file), zipfile.ZIP_DEFLATED)
|
||||
|
||||
if opts.extract_to:
|
||||
if os.path.exists(opts.extract_to):
|
||||
@ -197,5 +207,3 @@ class HTMLOutput(OutputFormatPlugin):
|
||||
|
||||
# cleanup temp dir
|
||||
shutil.rmtree(tempdir)
|
||||
|
||||
|
||||
|
@ -386,6 +386,15 @@ class MobiMLizer(object):
|
||||
for attr in ('rowspan', 'colspan','width','border','scope'):
|
||||
if attr in elem.attrib:
|
||||
istate.attrib[attr] = elem.attrib[attr]
|
||||
if tag == 'q':
|
||||
t = elem.text
|
||||
if not t:
|
||||
t = ''
|
||||
elem.text = u'\u201c' + t
|
||||
t = elem.tail
|
||||
if not t:
|
||||
t = ''
|
||||
elem.tail = u'\u201d' + t
|
||||
text = None
|
||||
if elem.text:
|
||||
if istate.preserve:
|
||||
|
@ -143,11 +143,17 @@ def render_jacket(mi, output_profile,
|
||||
if comments:
|
||||
comments = comments_to_html(comments)
|
||||
|
||||
try:
|
||||
author = mi.format_authors()
|
||||
except:
|
||||
author = ''
|
||||
|
||||
def generate_html(comments):
|
||||
args = dict(xmlns=XHTML_NS,
|
||||
title_str=title_str,
|
||||
css=css,
|
||||
title=title,
|
||||
author=author,
|
||||
pubdate_label=_('Published'), pubdate=pubdate,
|
||||
series_label=_('Series'), series=series,
|
||||
rating_label=_('Rating'), rating=rating,
|
||||
|
@ -133,7 +133,11 @@ class DetectStructure(object):
|
||||
|
||||
|
||||
def elem_to_link(self, item, elem, counter):
|
||||
text = xml2text(elem)
|
||||
text = xml2text(elem).strip()
|
||||
if not text:
|
||||
text = elem.get('title', '')
|
||||
if not text:
|
||||
text = elem.get('alt', '')
|
||||
text = text[:100].strip()
|
||||
id = elem.get('id', 'calibre_toc_%d'%counter)
|
||||
elem.set('id', id)
|
||||
|
@ -717,13 +717,13 @@ def build_forms(srcdir, info=None):
|
||||
dat = re.compile(r'QtGui.QApplication.translate\(.+?,\s+"(.+?)(?<!\\)",.+?\)', re.DOTALL).sub(r'_("\1")', dat)
|
||||
dat = dat.replace('_("MMM yyyy")', '"MMM yyyy"')
|
||||
dat = pat.sub(sub, dat)
|
||||
dat = dat.replace('from QtWebKit.QWebView import QWebView',
|
||||
'from PyQt4 import QtWebKit\nfrom PyQt4.QtWebKit import QWebView')
|
||||
|
||||
if form.endswith('viewer%smain.ui'%os.sep):
|
||||
info('\t\tPromoting WebView')
|
||||
dat = dat.replace('self.view = QtWebKit.QWebView(', 'self.view = DocumentView(')
|
||||
dat = dat.replace('self.view = QWebView(', 'self.view = DocumentView(')
|
||||
dat = dat.replace('from QtWebKit.QWebView import QWebView',
|
||||
'from PyQt4 import QtWebKit\nfrom PyQt4.QtWebKit import QWebView')
|
||||
dat += '\n\nfrom calibre.gui2.viewer.documentview import DocumentView'
|
||||
|
||||
open(compiled_form, 'wb').write(dat)
|
||||
|
@ -234,6 +234,7 @@ class EditMetadataAction(InterfaceAction):
|
||||
ci = self.gui.library_view.model().index(dest_row, 0)
|
||||
if ci.isValid():
|
||||
self.gui.library_view.setCurrentIndex(ci)
|
||||
self.gui.library_view.model().current_changed(ci, ci)
|
||||
|
||||
def add_formats(self, dest_id, src_books, replace=False):
|
||||
for src_book in src_books:
|
||||
|
@ -5,11 +5,13 @@ __license__ = 'GPL v3'
|
||||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
import os, collections
|
||||
import os, collections, sys
|
||||
from Queue import Queue
|
||||
|
||||
from PyQt4.Qt import QLabel, QPixmap, QSize, QWidget, Qt, pyqtSignal, \
|
||||
QVBoxLayout, QScrollArea, QPropertyAnimation, QEasingCurve, \
|
||||
QSizePolicy, QPainter, QRect, pyqtProperty
|
||||
from PyQt4.Qt import QPixmap, QSize, QWidget, Qt, pyqtSignal, \
|
||||
QPropertyAnimation, QEasingCurve, QThread, QApplication, QFontInfo, \
|
||||
QSizePolicy, QPainter, QRect, pyqtProperty, QLayout, QPalette
|
||||
from PyQt4.QtWebKit import QWebView
|
||||
|
||||
from calibre import fit_image, prepare_string_for_xml
|
||||
from calibre.gui2.widgets import IMAGE_EXTENSIONS
|
||||
@ -67,10 +69,7 @@ class CoverView(QWidget): # {{{
|
||||
|
||||
def __init__(self, vertical, parent=None):
|
||||
QWidget.__init__(self, parent)
|
||||
self.setMaximumSize(QSize(120, 120))
|
||||
self.setMinimumSize(QSize(120 if vertical else 20, 120 if vertical else
|
||||
20))
|
||||
self._current_pixmap_size = self.maximumSize()
|
||||
self._current_pixmap_size = QSize(120, 120)
|
||||
self.vertical = vertical
|
||||
|
||||
self.animation = QPropertyAnimation(self, 'current_pixmap_size', self)
|
||||
@ -79,8 +78,9 @@ class CoverView(QWidget): # {{{
|
||||
self.animation.setStartValue(QSize(0, 0))
|
||||
self.animation.valueChanged.connect(self.value_changed)
|
||||
|
||||
self.setSizePolicy(QSizePolicy.Expanding if vertical else
|
||||
QSizePolicy.Minimum, QSizePolicy.Expanding)
|
||||
self.setSizePolicy(
|
||||
QSizePolicy.Expanding if vertical else QSizePolicy.Minimum,
|
||||
QSizePolicy.Expanding)
|
||||
|
||||
self.default_pixmap = QPixmap(I('book.png'))
|
||||
self.pixmap = self.default_pixmap
|
||||
@ -109,20 +109,6 @@ class CoverView(QWidget): # {{{
|
||||
self.current_pixmap_size = QSize(self.pwidth, self.pheight)
|
||||
self.animation.setEndValue(self.current_pixmap_size)
|
||||
|
||||
def relayout(self, parent_size):
|
||||
if self.vertical:
|
||||
self.setMaximumSize(parent_size.width(),
|
||||
min(int(parent_size.height()/2.),int(4/3. * parent_size.width())+1))
|
||||
else:
|
||||
self.setMaximumSize(1+int(3/4. * parent_size.height()),
|
||||
parent_size.height())
|
||||
self.resize(self.maximumSize())
|
||||
self.animation.stop()
|
||||
self.do_layout()
|
||||
|
||||
def sizeHint(self):
|
||||
return self.maximumSize()
|
||||
|
||||
def show_data(self, data):
|
||||
self.animation.stop()
|
||||
same_item = data.get('id', True) == self.data.get('id', False)
|
||||
@ -165,70 +151,185 @@ class CoverView(QWidget): # {{{
|
||||
# }}}
|
||||
|
||||
# Book Info {{{
|
||||
class Label(QLabel):
|
||||
|
||||
mr = pyqtSignal(object)
|
||||
class RenderComments(QThread):
|
||||
|
||||
rdone = pyqtSignal(object, object)
|
||||
|
||||
def __init__(self, parent):
|
||||
QThread.__init__(self, parent)
|
||||
self.queue = Queue()
|
||||
self.start()
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
try:
|
||||
rows, comments = self.queue.get()
|
||||
except:
|
||||
break
|
||||
import time
|
||||
time.sleep(0.001)
|
||||
oint = sys.getcheckinterval()
|
||||
sys.setcheckinterval(5)
|
||||
try:
|
||||
self.rdone.emit(rows, comments_to_html(comments))
|
||||
except:
|
||||
pass
|
||||
sys.setcheckinterval(oint)
|
||||
|
||||
|
||||
class BookInfo(QWebView):
|
||||
|
||||
link_clicked = pyqtSignal(object)
|
||||
|
||||
def __init__(self):
|
||||
QLabel.__init__(self)
|
||||
self.setTextFormat(Qt.RichText)
|
||||
self.setText('')
|
||||
self.setWordWrap(True)
|
||||
self.setAlignment(Qt.AlignTop)
|
||||
self.linkActivated.connect(self.link_activated)
|
||||
def __init__(self, vertical, parent=None):
|
||||
QWebView.__init__(self, parent)
|
||||
self.vertical = vertical
|
||||
self.renderer = RenderComments(self)
|
||||
self.renderer.rdone.connect(self._show_data, type=Qt.QueuedConnection)
|
||||
self.page().setLinkDelegationPolicy(self.page().DelegateAllLinks)
|
||||
self.linkClicked.connect(self.link_activated)
|
||||
self._link_clicked = False
|
||||
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||
|
||||
def link_activated(self, link):
|
||||
self._link_clicked = True
|
||||
link = unicode(link)
|
||||
link = unicode(link.toString())
|
||||
self.link_clicked.emit(link)
|
||||
|
||||
def mouseReleaseEvent(self, ev):
|
||||
QLabel.mouseReleaseEvent(self, ev)
|
||||
if not self._link_clicked:
|
||||
self.mr.emit(ev)
|
||||
self._link_clicked = False
|
||||
|
||||
class BookInfo(QScrollArea):
|
||||
|
||||
def __init__(self, vertical, parent=None):
|
||||
QScrollArea.__init__(self, parent)
|
||||
self.vertical = vertical
|
||||
self.setWidgetResizable(True)
|
||||
self.label = Label()
|
||||
self.setWidget(self.label)
|
||||
self.link_clicked = self.label.link_clicked
|
||||
self.mr = self.label.mr
|
||||
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
||||
def turnoff_scrollbar(self, *args):
|
||||
self.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
|
||||
|
||||
def show_data(self, data):
|
||||
self.label.setText('')
|
||||
rows = render_rows(data)
|
||||
rows = u'\n'.join([u'<tr><td valign="top"><b>%s:</b></td><td valign="top">%s</td></tr>'%(k,t) for
|
||||
k, t in rows])
|
||||
comments = ''
|
||||
if data.get(_('Comments'), '') not in ('', u'None'):
|
||||
comments = data[_('Comments')]
|
||||
comments = comments_to_html(comments)
|
||||
comments = data.get(_('Comments'), '')
|
||||
if comments and comments != u'None':
|
||||
self.renderer.queue.put((rows, comments))
|
||||
self._show_data(rows, '')
|
||||
|
||||
|
||||
def _show_data(self, rows, comments):
|
||||
f = QFontInfo(QApplication.font(self.parent())).pixelSize()
|
||||
p = unicode(QApplication.palette().color(QPalette.Normal,
|
||||
QPalette.Base).name())
|
||||
templ = u'''\
|
||||
<html>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
body, td {background-color: %s; font-size: %dpx}
|
||||
a { text-decoration: none; color: blue }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
%%s
|
||||
</body>
|
||||
<html>
|
||||
'''%(p, f)
|
||||
if self.vertical:
|
||||
if comments:
|
||||
rows += u'<tr><td colspan="2">%s</td></tr>'%comments
|
||||
self.label.setText(u'<table>%s</table>'%rows)
|
||||
self.setHtml(templ%(u'<table>%s</table>'%rows))
|
||||
else:
|
||||
left_pane = u'<table>%s</table>'%rows
|
||||
right_pane = u'<div>%s</div>'%comments
|
||||
self.label.setText(u'<table><tr><td valign="top" '
|
||||
self.setHtml(templ%(u'<table><tr><td valign="top" '
|
||||
'style="padding-right:2em">%s</td><td valign="top">%s</td></tr></table>'
|
||||
% (left_pane, right_pane))
|
||||
% (left_pane, right_pane)))
|
||||
|
||||
def mouseDoubleClickEvent(self, ev):
|
||||
ev.ignore()
|
||||
|
||||
# }}}
|
||||
|
||||
class DetailsLayout(QLayout): # {{{
|
||||
|
||||
def __init__(self, vertical, parent):
|
||||
QLayout.__init__(self, parent)
|
||||
self.vertical = vertical
|
||||
self._children = []
|
||||
|
||||
self.min_size = QSize(190, 200) if vertical else QSize(120, 120)
|
||||
self.setContentsMargins(0, 0, 0, 0)
|
||||
|
||||
def minimumSize(self):
|
||||
return QSize(self.min_size)
|
||||
|
||||
def addItem(self, child):
|
||||
if len(self._children) > 2:
|
||||
raise ValueError('This layout can only manage two children')
|
||||
self._children.append(child)
|
||||
|
||||
def itemAt(self, i):
|
||||
try:
|
||||
return self._children[i]
|
||||
except:
|
||||
pass
|
||||
return None
|
||||
|
||||
def takeAt(self, i):
|
||||
try:
|
||||
self._children.pop(i)
|
||||
except:
|
||||
pass
|
||||
return None
|
||||
|
||||
def count(self):
|
||||
return len(self._children)
|
||||
|
||||
def sizeHint(self):
|
||||
return QSize(self.min_size)
|
||||
|
||||
def setGeometry(self, r):
|
||||
QLayout.setGeometry(self, r)
|
||||
self.do_layout(r)
|
||||
|
||||
def cover_height(self, r):
|
||||
mh = min(int(r.height()/2.), int(4/3. * r.width())+1)
|
||||
try:
|
||||
ph = self._children[0].widget().pixmap.height()
|
||||
except:
|
||||
ph = 0
|
||||
if ph > 0:
|
||||
mh = min(mh, ph)
|
||||
return mh
|
||||
|
||||
def cover_width(self, r):
|
||||
mw = 1 + int(3/4. * r.height())
|
||||
try:
|
||||
pw = self._children[0].widget().pixmap.width()
|
||||
except:
|
||||
pw = 0
|
||||
if pw > 0:
|
||||
mw = min(mw, pw)
|
||||
return mw
|
||||
|
||||
|
||||
def do_layout(self, rect):
|
||||
if len(self._children) != 2:
|
||||
return
|
||||
left, top, right, bottom = self.getContentsMargins()
|
||||
r = rect.adjusted(+left, +top, -right, -bottom)
|
||||
x = r.x()
|
||||
y = r.y()
|
||||
cover, details = self._children
|
||||
if self.vertical:
|
||||
ch = self.cover_height(r)
|
||||
cover.setGeometry(QRect(x, y, r.width(), ch))
|
||||
cover.widget().do_layout()
|
||||
y += ch + 5
|
||||
details.setGeometry(QRect(x, y, r.width(), r.height()-ch-5))
|
||||
else:
|
||||
cw = self.cover_width(r)
|
||||
cover.setGeometry(QRect(x, y, cw, r.height()))
|
||||
cover.widget().do_layout()
|
||||
x += cw + 5
|
||||
details.setGeometry(QRect(x, y, r.width() - cw - 5, r.height()))
|
||||
|
||||
# }}}
|
||||
|
||||
class BookDetails(QWidget): # {{{
|
||||
|
||||
resized = pyqtSignal(object)
|
||||
show_book_info = pyqtSignal()
|
||||
open_containing_folder = pyqtSignal(int)
|
||||
view_specific_format = pyqtSignal(int, object)
|
||||
@ -269,23 +370,14 @@ class BookDetails(QWidget): # {{{
|
||||
def __init__(self, vertical, parent=None):
|
||||
QWidget.__init__(self, parent)
|
||||
self.setAcceptDrops(True)
|
||||
self._layout = QVBoxLayout()
|
||||
if not vertical:
|
||||
self._layout.setDirection(self._layout.LeftToRight)
|
||||
self._layout = DetailsLayout(vertical, self)
|
||||
self.setLayout(self._layout)
|
||||
|
||||
self.cover_view = CoverView(vertical, self)
|
||||
self.cover_view.relayout(self.size())
|
||||
self.resized.connect(self.cover_view.relayout, type=Qt.QueuedConnection)
|
||||
self._layout.addWidget(self.cover_view)
|
||||
self.book_info = BookInfo(vertical, self)
|
||||
self._layout.addWidget(self.book_info)
|
||||
self.book_info.link_clicked.connect(self._link_clicked)
|
||||
self.book_info.mr.connect(self.mouseReleaseEvent)
|
||||
if vertical:
|
||||
self.setMinimumSize(QSize(190, 200))
|
||||
else:
|
||||
self.setMinimumSize(120, 120)
|
||||
self.setCursor(Qt.PointingHandCursor)
|
||||
|
||||
def _link_clicked(self, link):
|
||||
@ -299,17 +391,15 @@ class BookDetails(QWidget): # {{{
|
||||
open_local_file(val)
|
||||
|
||||
|
||||
def mouseReleaseEvent(self, ev):
|
||||
def mouseDoubleClickEvent(self, ev):
|
||||
ev.accept()
|
||||
self.show_book_info.emit()
|
||||
|
||||
def resizeEvent(self, ev):
|
||||
self.resized.emit(self.size())
|
||||
|
||||
def show_data(self, data):
|
||||
self.cover_view.show_data(data)
|
||||
self.book_info.show_data(data)
|
||||
self.setToolTip('<p>'+_('Click to open Book Details window') +
|
||||
self.cover_view.show_data(data)
|
||||
self._layout.do_layout(self.rect())
|
||||
self.setToolTip('<p>'+_('Double-click to open Book Details window') +
|
||||
'<br><br>' + _('Path') + ': ' + data.get(_('Path'), ''))
|
||||
|
||||
def reset_info(self):
|
||||
|
@ -5,8 +5,8 @@ __docformat__ = 'restructuredtext en'
|
||||
|
||||
import textwrap, os, re
|
||||
|
||||
from PyQt4.QtCore import QCoreApplication, SIGNAL, QModelIndex, QTimer, Qt
|
||||
from PyQt4.QtGui import QDialog, QPixmap, QGraphicsScene, QIcon
|
||||
from PyQt4.Qt import QCoreApplication, SIGNAL, QModelIndex, QTimer, Qt, \
|
||||
QDialog, QPixmap, QGraphicsScene, QIcon, QSize
|
||||
|
||||
from calibre.gui2.dialogs.book_info_ui import Ui_BookInfo
|
||||
from calibre.gui2 import dynamic, open_local_file
|
||||
@ -20,6 +20,8 @@ class BookInfo(QDialog, Ui_BookInfo):
|
||||
Ui_BookInfo.__init__(self)
|
||||
self.setupUi(self)
|
||||
self.cover_pixmap = None
|
||||
self.comments.sizeHint = self.comments_size_hint
|
||||
|
||||
desktop = QCoreApplication.instance().desktop()
|
||||
screen_height = desktop.availableGeometry().height() - 100
|
||||
self.resize(self.size().width(), screen_height)
|
||||
@ -37,12 +39,16 @@ class BookInfo(QDialog, Ui_BookInfo):
|
||||
self.fit_cover.stateChanged.connect(self.toggle_cover_fit)
|
||||
self.cover.resizeEvent = self.cover_view_resized
|
||||
|
||||
def comments_size_hint(self):
|
||||
return QSize(350, 350)
|
||||
|
||||
def toggle_cover_fit(self, state):
|
||||
dynamic.set('book_info_dialog_fit_cover', self.fit_cover.isChecked())
|
||||
self.resize_cover()
|
||||
|
||||
def cover_view_resized(self, event):
|
||||
QTimer.singleShot(1, self.resize_cover)
|
||||
|
||||
def slave(self, current, previous):
|
||||
row = current.row()
|
||||
self.refresh(row)
|
||||
@ -108,7 +114,7 @@ class BookInfo(QDialog, Ui_BookInfo):
|
||||
lines = comments.splitlines()
|
||||
lines = [x if x.strip() else '<br><br>' for x in lines]
|
||||
comments = '\n'.join(lines)
|
||||
self.comments.setText('<div>%s</div>' % comments)
|
||||
self.comments.setHtml('<div>%s</div>' % comments)
|
||||
cdata = info.pop('cover', '')
|
||||
self.cover_pixmap = QPixmap.fromImage(cdata)
|
||||
self.resize_cover()
|
||||
|
@ -47,9 +47,27 @@
|
||||
<property name="title">
|
||||
<string>Comments</string>
|
||||
</property>
|
||||
<layout class="QGridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QTextBrowser" name="comments"/>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QWebView" name="comments">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>350</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="url">
|
||||
<url>
|
||||
<string>about:blank</string>
|
||||
</url>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@ -91,6 +109,13 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QWebView</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>QtWebKit/QWebView</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="../../../../resources/images.qrc"/>
|
||||
</resources>
|
||||
|
@ -847,7 +847,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
||||
if cf is not None and hasattr(cf, 'terminate'):
|
||||
cf.terminate()
|
||||
cf.wait()
|
||||
|
||||
self.save_state()
|
||||
QDialog.reject(self, *args)
|
||||
|
||||
def read_state(self):
|
||||
|
@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en'
|
||||
from functools import partial
|
||||
|
||||
from PyQt4.Qt import QIcon, Qt, QWidget, QToolBar, QSize, \
|
||||
pyqtSignal, QToolButton, \
|
||||
pyqtSignal, QToolButton, QPushButton, \
|
||||
QObject, QVBoxLayout, QSizePolicy, QLabel, QHBoxLayout, QActionGroup, \
|
||||
QMenu
|
||||
|
||||
@ -151,6 +151,7 @@ class SearchBar(QWidget): # {{{
|
||||
QWidget.__init__(self, parent)
|
||||
self._layout = l = QHBoxLayout()
|
||||
self.setLayout(self._layout)
|
||||
self._layout.setContentsMargins(0,5,0,0)
|
||||
|
||||
x = ComboBoxWithHelp(self)
|
||||
x.setMaximumSize(QSize(150, 16777215))
|
||||
@ -170,16 +171,20 @@ class SearchBar(QWidget): # {{{
|
||||
l.addWidget(x)
|
||||
x.setToolTip(_("Advanced search"))
|
||||
|
||||
self.label = x = QLabel(_('&Search:'))
|
||||
l.addWidget(self.label)
|
||||
x.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
|
||||
|
||||
x = parent.search = SearchBox2(self)
|
||||
x.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum)
|
||||
x.setObjectName("search")
|
||||
x.setToolTip(_("<p>Search the list of books by title, author, publisher, tags, comments, etc.<br><br>Words separated by spaces are ANDed"))
|
||||
l.addWidget(x)
|
||||
|
||||
self.search_button = QPushButton(_('&Go!'))
|
||||
l.addWidget(self.search_button)
|
||||
self.search_button.setSizePolicy(QSizePolicy.Minimum,
|
||||
QSizePolicy.Minimum)
|
||||
self.search_button.clicked.connect(parent.search.do_search)
|
||||
self.search_button.setToolTip(
|
||||
_('Do Quick Search (you can also press the Enter key)'))
|
||||
|
||||
x = parent.clear_button = QToolButton(self)
|
||||
x.setIcon(QIcon(I('clear_left.png')))
|
||||
x.setObjectName("clear_button")
|
||||
@ -210,7 +215,6 @@ class SearchBar(QWidget): # {{{
|
||||
l.addWidget(x)
|
||||
x.setToolTip(_("Delete current saved search"))
|
||||
|
||||
self.label.setBuddy(parent.search)
|
||||
|
||||
|
||||
# }}}
|
||||
|
@ -233,17 +233,10 @@ class BooksModel(QAbstractTableModel): # {{{
|
||||
|
||||
def delete_books_by_id(self, ids):
|
||||
for id in ids:
|
||||
try:
|
||||
row = self.db.row(id)
|
||||
except:
|
||||
row = -1
|
||||
if row > -1:
|
||||
self.beginRemoveRows(QModelIndex(), row, row)
|
||||
self.db.delete_book(id)
|
||||
if row > -1:
|
||||
self.endRemoveRows()
|
||||
self.count_changed()
|
||||
self.clear_caches()
|
||||
self.reset()
|
||||
|
||||
def books_added(self, num):
|
||||
if num > 0:
|
||||
@ -335,7 +328,7 @@ class BooksModel(QAbstractTableModel): # {{{
|
||||
sidx = self.db.series_index(idx)
|
||||
sidx = fmt_sidx(sidx, use_roman = self.use_roman_numbers)
|
||||
data[_('Series')] = \
|
||||
_('Book <font face="serif">%s</font> of %s.')%\
|
||||
_('Book %s of %s.')%\
|
||||
(sidx, prepare_string_for_xml(series))
|
||||
mi = self.db.get_metadata(idx)
|
||||
for key in mi.custom_field_keys():
|
||||
|
@ -51,6 +51,10 @@ class BooksView(QTableView): # {{{
|
||||
QTableView.__init__(self, parent)
|
||||
|
||||
self.setEditTriggers(self.SelectedClicked|self.EditKeyPressed)
|
||||
if tweaks['doubleclick_on_library_view'] == 'edit_cell':
|
||||
self.setEditTriggers(self.DoubleClicked|self.editTriggers())
|
||||
elif tweaks['doubleclick_on_library_view'] == 'open_viewer':
|
||||
self.doubleClicked.connect(parent.iactions['View'].view_triggered)
|
||||
|
||||
self.drag_allowed = True
|
||||
self.setDragEnabled(True)
|
||||
@ -100,8 +104,6 @@ class BooksView(QTableView): # {{{
|
||||
self._model.about_to_be_sorted.connect(self.about_to_be_sorted)
|
||||
self._model.sorting_done.connect(self.sorting_done)
|
||||
|
||||
self.doubleClicked.connect(parent.iactions['View'].view_triggered)
|
||||
|
||||
# Column Header Context Menu {{{
|
||||
def column_header_context_handler(self, action=None, column=None):
|
||||
if not action or not column:
|
||||
@ -389,7 +391,8 @@ class BooksView(QTableView): # {{{
|
||||
self.save_state()
|
||||
self._model.set_database(db)
|
||||
self.tags_delegate.set_database(db)
|
||||
self.authors_delegate.set_auto_complete_function(db.all_authors)
|
||||
self.authors_delegate.set_auto_complete_function(
|
||||
lambda: [(x, y.replace('|', ',')) for (x, y) in db.all_authors()])
|
||||
self.series_delegate.set_auto_complete_function(db.all_series)
|
||||
self.publisher_delegate.set_auto_complete_function(db.all_publishers)
|
||||
|
||||
|
@ -345,6 +345,7 @@ def main(args=sys.argv):
|
||||
# On windows only singleinstance can be trusted
|
||||
otherinstance = True if iswindows else False
|
||||
if not otherinstance:
|
||||
sys.setcheckinterval(50) # Make GUI more responsive
|
||||
return run_gui(opts, args, actions, listener, app)
|
||||
|
||||
communicate(args)
|
||||
|
@ -148,6 +148,10 @@ class SearchBox2(QComboBox):
|
||||
self.line_edit.setStyleSheet('QLineEdit { color: black; background-color: %s; }' % col)
|
||||
|
||||
def key_pressed(self, event):
|
||||
k = event.key()
|
||||
if k in (Qt.Key_Left, Qt.Key_Right, Qt.Key_Up, Qt.Key_Down,
|
||||
Qt.Key_Home, Qt.Key_End, Qt.Key_PageUp, Qt.Key_PageDown):
|
||||
return
|
||||
self.normalize_state()
|
||||
if self._in_a_search:
|
||||
self.emit(SIGNAL('changed()'))
|
||||
@ -159,8 +163,11 @@ class SearchBox2(QComboBox):
|
||||
|
||||
def mouse_released(self, event):
|
||||
self.normalize_state()
|
||||
if self.as_you_type:
|
||||
self.timer.start(1500)
|
||||
# Dont trigger a search since it make
|
||||
# re-positioning the cursor using the mouse
|
||||
# impossible
|
||||
#if self.as_you_type:
|
||||
# self.timer.start(1500)
|
||||
|
||||
def timer_event(self):
|
||||
self.do_search()
|
||||
@ -176,7 +183,7 @@ class SearchBox2(QComboBox):
|
||||
return ''
|
||||
return text
|
||||
|
||||
def do_search(self):
|
||||
def do_search(self, *args):
|
||||
text = unicode(self.currentText()).strip()
|
||||
if not text or text == self.help_text:
|
||||
return self.clear()
|
||||
@ -365,7 +372,7 @@ class SearchBoxMixin(object):
|
||||
self.search.setMaximumWidth(self.width()-150)
|
||||
self.action_focus_search = QAction(self)
|
||||
shortcuts = QKeySequence.keyBindings(QKeySequence.Find)
|
||||
shortcuts = list(shortcuts) + [QKeySequence('/')]
|
||||
shortcuts = list(shortcuts) + [QKeySequence('/'), QKeySequence('Alt+S')]
|
||||
self.action_focus_search.setShortcuts(shortcuts)
|
||||
self.action_focus_search.triggered.connect(lambda x:
|
||||
self.search.setFocus(Qt.OtherFocusReason))
|
||||
|
@ -861,6 +861,7 @@ class TagBrowserWidget(QWidget): # {{{
|
||||
QWidget.__init__(self, parent)
|
||||
self._layout = QVBoxLayout()
|
||||
self.setLayout(self._layout)
|
||||
self._layout.setContentsMargins(0,0,0,0)
|
||||
|
||||
parent.tags_view = TagsView(parent)
|
||||
self._layout.addWidget(parent.tags_view)
|
||||
|
@ -472,8 +472,12 @@ class EbookViewer(MainWindow, Ui_EbookViewer):
|
||||
if path != self.current_page:
|
||||
self.pending_anchor = frag
|
||||
self.load_path(path)
|
||||
elif frag:
|
||||
else:
|
||||
if frag:
|
||||
self.view.scroll_to(frag)
|
||||
else:
|
||||
# Scroll to top
|
||||
self.view.scroll_to('#')
|
||||
else:
|
||||
open_url(url)
|
||||
|
||||
|
@ -245,6 +245,9 @@ class BrowseServer(object):
|
||||
ans = ans.replace('{sort_select_label}', xml(_('Sort by')+':'))
|
||||
ans = ans.replace('{sort_cookie_name}', scn)
|
||||
ans = ans.replace('{prefix}', self.opts.url_prefix)
|
||||
ans = ans.replace('{library}', _('library'))
|
||||
ans = ans.replace('{home}', _('home'))
|
||||
ans = ans.replace('{Search}', _('Search'))
|
||||
opts = ['<option %svalue="%s">%s</option>' % (
|
||||
'selected="selected" ' if k==sort else '',
|
||||
xml(k), xml(n), ) for k, n in
|
||||
|
@ -377,7 +377,7 @@ They are XPath expressions that match tags in the intermediate XHTML produced by
|
||||
how to construct XPath expressions. Next to each option is a button that launches a wizard to help with the creation
|
||||
of basic XPath expressions. The following simple example illustrates how to use these options.
|
||||
|
||||
Suppose you have an input document taht results in XHTML that look like this:
|
||||
Suppose you have an input document that results in XHTML that look like this:
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
@ -418,6 +418,25 @@ This will result in an automatically generated two level Table of Contents that
|
||||
Not all output formats support a multi level Table of Contents. You should first try with EPUB Output. If that
|
||||
works, then try your format of choice.
|
||||
|
||||
Using images as chapter titles when converting HTML input documents
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Suppose you want to use an image as your chapter title, but still want |app| to be able to automatically generate a Table of Contents for you from the chapter titles.
|
||||
Use the following HTML markup to achieve this
|
||||
|
||||
.. code-block:: html
|
||||
|
||||
<html>
|
||||
<body>
|
||||
<h2>Chapter 1</h2>
|
||||
<p>chapter 1 text...</p>
|
||||
<h2 title="Chapter 2"><img src="chapter2.jpg" /></h2>
|
||||
<p>chapter 2 text...</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Set the :guilabel:`Level 1 TOC` setting to ``//h:h2``. Then, for chapter two, |app| will take the title from the value of the ``title`` attribute on the ``<h2>`` tag, since the tag has no text.
|
||||
|
||||
How options are set/saved for Conversion
|
||||
-------------------------------------------
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -7,14 +7,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-10-28 00:31+0000\n"
|
||||
"PO-Revision-Date: 2010-10-28 17:43+0000\n"
|
||||
"POT-Creation-Date: 2010-10-29 19:59+0000\n"
|
||||
"PO-Revision-Date: 2010-10-29 19:53+0000\n"
|
||||
"Last-Translator: Antón Méixome <meixome@gmail.com>\n"
|
||||
"Language-Team: Galician <gl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-10-29 05:23+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-10-30 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43
|
||||
@ -38,8 +38,8 @@ msgstr "Non facer nada"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:336
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:339
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894
|
||||
@ -54,7 +54,7 @@ msgstr "Non facer nada"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64
|
||||
@ -145,7 +145,7 @@ msgstr "Non facer nada"
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2161
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2163
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2295
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:224
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:228
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:78
|
||||
@ -267,45 +267,45 @@ msgstr "Define os metadatos nos ficheiros %s"
|
||||
msgid "Set metadata from %s files"
|
||||
msgstr "Define os metadatos desde os ficheiros %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:706
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708
|
||||
msgid "Look and Feel"
|
||||
msgstr "Aparencia e comportamento"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:710
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:722
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:733
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:744
|
||||
msgid "Interface"
|
||||
msgstr "Interface"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714
|
||||
msgid "Adjust the look and feel of the calibre interface to suit your tastes"
|
||||
msgstr ""
|
||||
"Axuste a aparencia e comportamento da interface do Calibre para que se "
|
||||
"adapte aos seus gustos"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720
|
||||
msgid "Behavior"
|
||||
msgstr "Comportamento"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726
|
||||
msgid "Change the way calibre behaves"
|
||||
msgstr "Cambiar o modo en que se comporta o Calibre"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202
|
||||
msgid "Add your own columns"
|
||||
msgstr "Engadir as súas propias columnas"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737
|
||||
msgid "Add/remove your own columns to the calibre book list"
|
||||
msgstr "Engadir/retirar as columnas propias da lista de libros do Calibre"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742
|
||||
msgid "Customize the toolbar"
|
||||
msgstr "Personalizar a barra de ferramentas"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748
|
||||
msgid ""
|
||||
"Customize the toolbars and context menus, changing which actions are "
|
||||
"available in each"
|
||||
@ -313,60 +313,60 @@ msgstr ""
|
||||
"Personalizar as barras de ferramentas e os menús de contexto, cambiando as "
|
||||
"accións que estarán dispoñíbeis en cada un"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754
|
||||
msgid "Input Options"
|
||||
msgstr "Opcións de entrada"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:756
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:767
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:778
|
||||
msgid "Conversion"
|
||||
msgstr "Conversión"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760
|
||||
msgid "Set conversion options specific to each input format"
|
||||
msgstr ""
|
||||
"Estabelecer as opcións de conversión específicas para cada formato de entrada"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765
|
||||
msgid "Common Options"
|
||||
msgstr "Opcións comúns"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771
|
||||
msgid "Set conversion options common to all formats"
|
||||
msgstr "Estabelecer as opcións de conversión comúns para todos os formatos"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776
|
||||
msgid "Output Options"
|
||||
msgstr "Opcións de saída"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782
|
||||
msgid "Set conversion options specific to each output format"
|
||||
msgstr ""
|
||||
"Estabelece as opcións específicas de conversión para cada formato de saída"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787
|
||||
msgid "Adding books"
|
||||
msgstr "Adición de libros"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:789
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:801
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:813
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:825
|
||||
msgid "Import/Export"
|
||||
msgstr "Importar/exportar"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793
|
||||
msgid "Control how calibre reads metadata from files when adding books"
|
||||
msgstr ""
|
||||
"Controla o modo como Calibre le os metadatos dos ficheiros na proceso de "
|
||||
"adición de libros"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799
|
||||
msgid "Saving books to disk"
|
||||
msgstr "Gardado de libros no disco"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805
|
||||
msgid ""
|
||||
"Control how calibre exports files from its database to disk when using Save "
|
||||
"to disk"
|
||||
@ -374,33 +374,33 @@ msgstr ""
|
||||
"Controla o modo como Calibre exporta ficheiros da súa base de datos no "
|
||||
"disco no proceso de Gardado no disco"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811
|
||||
msgid "Sending books to devices"
|
||||
msgstr "Envío de libros a dispositivos"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817
|
||||
msgid "Control how calibre transfers files to your ebook reader"
|
||||
msgstr ""
|
||||
"Controla cando Calibre transfere os ficheiros ao seu lector de libros"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823
|
||||
msgid "Metadata plugboards"
|
||||
msgstr "Plugboards de metadatos"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829
|
||||
msgid "Change metadata fields before saving/sending"
|
||||
msgstr "Cambiar campos de metadatos antes do gardado/envío"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834
|
||||
msgid "Sharing books by email"
|
||||
msgstr "Compartición de libros por correo"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:836
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:848
|
||||
msgid "Sharing"
|
||||
msgstr "Compartición"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840
|
||||
msgid ""
|
||||
"Setup sharing of books via email. Can be used for automatic sending of "
|
||||
"downloaded news to your devices"
|
||||
@ -408,11 +408,11 @@ msgstr ""
|
||||
"Configura a compartición de libros por correo electrónico. Pódese usar para "
|
||||
"enviar automticamente as noticias descargadas aos seus dispositivos"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846
|
||||
msgid "Sharing over the net"
|
||||
msgstr "Compartición na rede"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852
|
||||
msgid ""
|
||||
"Setup the calibre Content Server which will give you access to your calibre "
|
||||
"library from anywhere, on any device, over the internet"
|
||||
@ -421,33 +421,33 @@ msgstr ""
|
||||
"biblioteca do Calibre en calquera lugar, con calquera dispositivo, a través "
|
||||
"da Internet."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859
|
||||
msgid "Plugins"
|
||||
msgstr "Complementos"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:873
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:884
|
||||
msgid "Advanced"
|
||||
msgstr "Avanzado"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865
|
||||
msgid "Add/remove/customize various bits of calibre functionality"
|
||||
msgstr "Engadir/eliminar/configurar diversas funcións do Calibre"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871
|
||||
msgid "Tweaks"
|
||||
msgstr "Axustes"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877
|
||||
msgid "Fine tune how calibre behaves in various contexts"
|
||||
msgstr "Axuste fino de como se comporta o Calibre en diversos contextos"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Miscelánea"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888
|
||||
msgid "Miscellaneous advanced configuration"
|
||||
msgstr "Configuración miscelánea avanzada"
|
||||
|
||||
@ -611,7 +611,7 @@ msgstr ""
|
||||
msgid "This profile is intended for the Amazon Kindle DX."
|
||||
msgstr "Este perfil é o propio o Amazon Kindle DX."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:663
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:664
|
||||
msgid "This profile is intended for the Sanda Bambook."
|
||||
msgstr "Este perfil está pensado para o Sandra Bambook."
|
||||
|
||||
@ -1024,11 +1024,11 @@ msgstr "Comunicar co Kogan"
|
||||
msgid "Communicate with the Pandigital Novel"
|
||||
msgstr "Conectar co Pandigital Novel"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:130
|
||||
msgid "Communicate with the VelocityMicro"
|
||||
msgstr "Comunicar con VelocityMono"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:142
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:148
|
||||
msgid "Communicate with the GM2000"
|
||||
msgstr "Comunicar co GM2000"
|
||||
|
||||
@ -1089,11 +1089,15 @@ msgstr "Comunicar co lector Teclast K3/K5."
|
||||
msgid "Communicate with the Newsmy reader."
|
||||
msgstr "Comunicar co lector de Newsmy"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47
|
||||
msgid "Communicate with the Pico reader."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57
|
||||
msgid "Communicate with the iPapyrus reader."
|
||||
msgstr "Comunicar co lector de iPapyrus."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:59
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68
|
||||
msgid "Communicate with the Sovos reader."
|
||||
msgstr "Comunicar co lector Sovos."
|
||||
|
||||
@ -2040,7 +2044,7 @@ msgstr ""
|
||||
"opción, a imaxe pode distorsionarse, mais non terá bordos."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:170
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:205
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:203
|
||||
msgid "Start"
|
||||
msgstr "Iniciar"
|
||||
|
||||
@ -2435,7 +2439,7 @@ msgstr "Si"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:380
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:930
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
@ -2479,7 +2483,7 @@ msgstr "Comentarios"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1134
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:608
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:618
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetas"
|
||||
|
||||
@ -2909,7 +2913,7 @@ msgstr "Opcións da xeración HTM TOC"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:153
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:606
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:616
|
||||
msgid "Rating"
|
||||
msgstr "Avaliación"
|
||||
|
||||
@ -3279,7 +3283,7 @@ msgstr ""
|
||||
"Calibre. Convértao primeiro a HTML e ténteo despois.\n"
|
||||
"%s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:32
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:25
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23
|
||||
msgid ""
|
||||
"Specify the character encoding of the output document. The default is utf-8."
|
||||
@ -3287,7 +3291,7 @@ msgstr ""
|
||||
"Especifique a codificación de caracteres do documento de saída. A "
|
||||
"predeterminada é UTF-8."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:29
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38
|
||||
msgid ""
|
||||
"The maximum number of characters per line. This splits on the first space "
|
||||
@ -3301,17 +3305,34 @@ msgstr ""
|
||||
"de haber un mínimo de 25 caracteres. Se, pola contra, desexa desactivar a "
|
||||
"quebra de liña, empregue o 0."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:36
|
||||
msgid ""
|
||||
"Specify whether or not to insert an empty line between two paragraphs."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:40
|
||||
msgid ""
|
||||
"Specify whether or not to insert two space characters to indent the first "
|
||||
"line of each paragraph."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:44
|
||||
msgid ""
|
||||
"Specify whether or not to hide the chapter title for each chapter. Useful "
|
||||
"for image-only output (eg. comics)."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:122
|
||||
msgid "Start Page"
|
||||
msgstr "Páxina de inicio"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:132
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:134
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:136
|
||||
msgid "Cover Pages"
|
||||
msgstr "Portadas"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:149
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:152
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:147
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:150
|
||||
msgid " (Preface)"
|
||||
msgstr " (Prefacio)"
|
||||
|
||||
@ -3492,7 +3513,7 @@ msgid "Disable UI animations"
|
||||
msgstr "Desactivar as animacións UI"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:487
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:494
|
||||
msgid "Copied"
|
||||
msgstr "Copiado"
|
||||
|
||||
@ -3504,7 +3525,7 @@ msgstr "Copiar"
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Copiar no Portapapeis"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:466
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:467
|
||||
msgid "Choose Files"
|
||||
msgstr "Escoller os Ficheiros"
|
||||
|
||||
@ -4410,7 +4431,7 @@ msgid "Click the show details button to see which ones."
|
||||
msgstr "Prema o botón de amosar detalles para os ver."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:613
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623
|
||||
msgid "Show book details"
|
||||
msgstr "Amosar os detalles do libro"
|
||||
|
||||
@ -4868,7 +4889,7 @@ msgstr "saída"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51
|
||||
@ -5768,6 +5789,18 @@ msgstr ""
|
||||
msgid "SNB Output"
|
||||
msgstr "Saída SNB"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:40
|
||||
msgid "Hide chapter name"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41
|
||||
msgid "Insert space before the first line for each paragraph"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42
|
||||
msgid "Insert empty line between paragraphs"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
|
||||
msgid ""
|
||||
"Structure\n"
|
||||
@ -6166,8 +6199,8 @@ msgid "Send and delete from library"
|
||||
msgstr "Enviar e borrar da biblioteca"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492
|
||||
msgid "Send specific format"
|
||||
msgstr "Enviar un formato específico"
|
||||
msgid "Send specific format to"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:528
|
||||
msgid "Eject device"
|
||||
@ -6505,7 +6538,7 @@ msgid "No location selected"
|
||||
msgstr "Non seleccionou unha localización"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:628
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:635
|
||||
msgid "Bad location"
|
||||
msgstr "Localización incorrecta"
|
||||
|
||||
@ -6586,7 +6619,7 @@ msgstr "Localización"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:932
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
@ -7234,76 +7267,77 @@ msgid "This ISBN number is invalid"
|
||||
msgstr "O ISBN non é correcto"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611
|
||||
msgid "Cannot use tag editor"
|
||||
msgstr "Non se pode empregar o editor de etiquetas"
|
||||
msgid "Tags changed"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612
|
||||
msgid "The tags editor cannot be used if you have modified the tags"
|
||||
msgid ""
|
||||
"You have changed the tags. In order to use the tags editor, you must either "
|
||||
"discard or apply these changes"
|
||||
msgstr ""
|
||||
"O editor de etiquetas non se pode empregar se se modificaron as etiquetas"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:632
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:639
|
||||
msgid "Downloading cover..."
|
||||
msgstr "A descargar a capa..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:649
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:655
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:667
|
||||
msgid "Cannot fetch cover"
|
||||
msgstr "Non se puido obter a capa"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:652
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:663
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:668
|
||||
msgid "<b>Could not fetch cover.</b><br/>"
|
||||
msgstr "<b>Non se puido obter a capa</b><br/>"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:653
|
||||
msgid "The download timed out."
|
||||
msgstr "Expirou o tempo de descarga"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:650
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657
|
||||
msgid "Could not find cover for this book. Try specifying the ISBN first."
|
||||
msgstr ""
|
||||
"Non se achou unha capa para este libro; tente especificar primeiro o ISBN."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669
|
||||
msgid ""
|
||||
"For the error message from each cover source, click Show details below."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676
|
||||
msgid "Bad cover"
|
||||
msgstr "Capa incorrecta"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:670
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:677
|
||||
msgid "The cover is not a valid picture"
|
||||
msgstr "A capa non é unha imaxe válida"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:703
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:710
|
||||
msgid "There were errors"
|
||||
msgstr "Houbo algúns erros"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:704
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:711
|
||||
msgid "There were errors downloading social metadata"
|
||||
msgstr "Houbo algúns erros ao descargar os metadatos sociais"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:742
|
||||
msgid "Cannot fetch metadata"
|
||||
msgstr "Non é posíbel oter metadatos"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:736
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:743
|
||||
msgid "You must specify at least one of ISBN, Title, Authors or Publisher"
|
||||
msgstr ""
|
||||
"Ten de especificar, cando menos, un dos seguintes: ISBN, título, autoría ou "
|
||||
"editorial."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:823
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:833
|
||||
msgid "Permission denied"
|
||||
msgstr "Permiso denegado"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:824
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:834
|
||||
msgid "Could not open %s. Is it being used by another program?"
|
||||
msgstr "Non se pode abri %s. Estará a se empregar cun outro programa?"
|
||||
|
||||
@ -8645,7 +8679,7 @@ msgid "Do not check for updates"
|
||||
msgstr "Non comprobar se hai actualizacións"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:58
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:643
|
||||
msgid "Calibre Library"
|
||||
msgstr "Biblioteca do Calibre"
|
||||
|
||||
@ -8813,7 +8847,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:287
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:612
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:622
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
@ -10726,59 +10760,59 @@ msgstr ""
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:378
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:385
|
||||
msgid ""
|
||||
"If you use the WordPlayer e-book app on your Android phone, you can access "
|
||||
"your calibre book collection directly on the device. To do this you have to "
|
||||
"turn on the content server."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:382
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:389
|
||||
msgid ""
|
||||
"Remember to leave calibre running as the server only runs as long as calibre "
|
||||
"is running."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:384
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:391
|
||||
msgid ""
|
||||
"You have to add the URL http://myhostname:8080 as your calibre library in "
|
||||
"WordPlayer. Here myhostname should be the fully qualified hostname or the IP "
|
||||
"address of the computer calibre is running on."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:461
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:468
|
||||
msgid "Moving library..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:477
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:478
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485
|
||||
msgid "Failed to move library"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:532
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:539
|
||||
msgid "Invalid database"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:533
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:540
|
||||
msgid ""
|
||||
"<p>An invalid library already exists at %s, delete it before trying to move "
|
||||
"the existing library.<br>Error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:544
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:551
|
||||
msgid "Could not move library"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:622
|
||||
msgid "Select location for books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:629
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636
|
||||
msgid ""
|
||||
"You must choose an empty folder for the calibre library. %s is not empty."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:703
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:710
|
||||
msgid "welcome wizard"
|
||||
msgstr ""
|
||||
|
||||
@ -11956,12 +11990,18 @@ msgid ""
|
||||
"disable grouping."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/base.py:131
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:48
|
||||
msgid ""
|
||||
"Prefix to prepend to all URLs. Useful for reverseproxying to this server "
|
||||
"from Apache/nginx/etc."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/base.py:149
|
||||
msgid "Password to access your calibre library. Username is "
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:399
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:401
|
||||
msgid "Loading, please wait"
|
||||
msgstr ""
|
||||
|
||||
@ -12006,74 +12046,74 @@ msgstr ""
|
||||
msgid "Sort by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:307
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:505
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:512
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
msgid "Newest"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:506
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:309
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:513
|
||||
msgid "All books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:340
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341
|
||||
msgid "Browse books by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:345
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:346
|
||||
msgid "Choose a category to browse by:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:418
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:421
|
||||
msgid "Browsing by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:419
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:422
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:535
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:543
|
||||
msgid "in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:538
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:546
|
||||
msgid "Books in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:588
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:597
|
||||
msgid "Other formats"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:595
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:604
|
||||
msgid "Read %s in the %s format"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:600
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:609
|
||||
msgid "Get"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:614
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:624
|
||||
msgid "Permalink"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625
|
||||
msgid "A permanent link to this book"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:626
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:636
|
||||
msgid "This book has been deleted"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:707
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:720
|
||||
msgid "in search"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:709
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:722
|
||||
msgid "Matching books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:39
|
||||
msgid ""
|
||||
"[options]\n"
|
||||
"\n"
|
||||
@ -12086,15 +12126,15 @@ msgid ""
|
||||
"The OPDS interface is advertised via BonJour automatically.\n"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:41
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:52
|
||||
msgid "Path to the library folder to serve with the content server"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:43
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:54
|
||||
msgid "Write process PID to the specified file"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:58
|
||||
msgid ""
|
||||
"Specifies a restriction to be used for this invocation. This option "
|
||||
"overrides any per-library settings specified in the GUI"
|
||||
@ -12424,93 +12464,93 @@ msgstr ""
|
||||
msgid "Unknown News Source"
|
||||
msgstr "Fonte de Novas Descoñecida"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614
|
||||
msgid "The \"%s\" recipe needs a username and password."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:714
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:713
|
||||
msgid "Download finished"
|
||||
msgstr "Rematou a descarga"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:716
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715
|
||||
msgid "Failed to download the following articles:"
|
||||
msgstr "Produciuse un fallo na descarga dos seguintes artigos:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:722
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721
|
||||
msgid "Failed to download parts of the following articles:"
|
||||
msgstr "Produciuse un fallo na descarga de partes do seguintes artigos:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:724
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:723
|
||||
msgid " from "
|
||||
msgstr " desde "
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:726
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:725
|
||||
msgid "\tFailed links:"
|
||||
msgstr "\tLigazóns erradas:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:815
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:814
|
||||
msgid "Could not fetch article. Run with -vv to see the reason"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835
|
||||
msgid "Fetching feeds..."
|
||||
msgstr "A obter os fluxos..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840
|
||||
msgid "Got feeds from index page"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:850
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:849
|
||||
msgid "Trying to download cover..."
|
||||
msgstr "Tratando de descargar a capa..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:852
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851
|
||||
msgid "Generating masthead..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:933
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:932
|
||||
msgid "Starting download [%d thread(s)]..."
|
||||
msgstr "A comezar a descarga [%d fío(s)]..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:949
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:948
|
||||
msgid "Feeds downloaded to %s"
|
||||
msgstr "Fluxos descargados en %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:958
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:957
|
||||
msgid "Could not download cover: %s"
|
||||
msgstr "Non se puido descargar a capa: %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:965
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:964
|
||||
msgid "Downloading cover from %s"
|
||||
msgstr "A descargar a capa desde %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009
|
||||
msgid "Masthead image downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1178
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1177
|
||||
msgid "Untitled Article"
|
||||
msgstr "Artigo sen Título"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1248
|
||||
msgid "Article downloaded: %s"
|
||||
msgstr "Artigo descargado: %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1259
|
||||
msgid "Article download failed: %s"
|
||||
msgstr "Erro ao descargar o artigo: %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1277
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1276
|
||||
msgid "Fetching feed"
|
||||
msgstr "A obter o fluxo"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1424
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1423
|
||||
msgid ""
|
||||
"Failed to log in, check your username and password for the calibre "
|
||||
"Periodicals service."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1438
|
||||
msgid ""
|
||||
"You do not have permission to download this issue. Either your subscription "
|
||||
"has expired or you have exceeded the maximum allowed downloads for today."
|
||||
@ -12779,6 +12819,9 @@ msgstr "Non descargar follas de estilo CSS"
|
||||
#~ msgid "Force maximum line lenght"
|
||||
#~ msgstr "Obrigar á lonxitude máxima da liña"
|
||||
|
||||
#~ msgid "Send specific format"
|
||||
#~ msgstr "Enviar un formato específico"
|
||||
|
||||
#~ msgid "Fit &cover to view"
|
||||
#~ msgstr "Axustar a &capa á xanela"
|
||||
|
||||
@ -12944,6 +12987,13 @@ msgstr "Non descargar follas de estilo CSS"
|
||||
#~ "Así, se seleccionou o libro A e despois o Libro B,\n"
|
||||
#~ "o libro A será o número 1 e o libro B o número 2."
|
||||
|
||||
#~ msgid "Cannot use tag editor"
|
||||
#~ msgstr "Non se pode empregar o editor de etiquetas"
|
||||
|
||||
#~ msgid "The tags editor cannot be used if you have modified the tags"
|
||||
#~ msgstr ""
|
||||
#~ "O editor de etiquetas non se pode empregar se se modificaron as etiquetas"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Automatically create the author sort entry based on the current author entry"
|
||||
#~ msgstr ""
|
||||
|
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 ""
|
||||
"Project-Id-Version: calibre 0.4.55\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2010-10-28 00:31+0000\n"
|
||||
"PO-Revision-Date: 2010-10-28 13:56+0000\n"
|
||||
"Last-Translator: Vitaliy Starostin <Unknown>\n"
|
||||
"POT-Creation-Date: 2010-10-29 19:59+0000\n"
|
||||
"PO-Revision-Date: 2010-10-29 19:54+0000\n"
|
||||
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-10-29 05:24+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-10-30 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Poedit-Country: RUSSIAN FEDERATION\n"
|
||||
"X-Poedit-Language: Russian\n"
|
||||
@ -42,8 +42,8 @@ msgstr "Ничего не делает"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:336
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:339
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894
|
||||
@ -58,7 +58,7 @@ msgstr "Ничего не делает"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64
|
||||
@ -149,7 +149,7 @@ msgstr "Ничего не делает"
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2161
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2163
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2295
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:224
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:228
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:78
|
||||
@ -271,130 +271,130 @@ msgstr "Внести метаданные в файлы %s"
|
||||
msgid "Set metadata from %s files"
|
||||
msgstr "Внести метаданные из файлов %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:706
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708
|
||||
msgid "Look and Feel"
|
||||
msgstr "Оформление"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:710
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:722
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:733
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:744
|
||||
msgid "Interface"
|
||||
msgstr "Интерфейс"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714
|
||||
msgid "Adjust the look and feel of the calibre interface to suit your tastes"
|
||||
msgstr "Настройте внешний вид calibre по-своему вкусу"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720
|
||||
msgid "Behavior"
|
||||
msgstr "Предпочтения"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726
|
||||
msgid "Change the way calibre behaves"
|
||||
msgstr "Настройка поведения calibre"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202
|
||||
msgid "Add your own columns"
|
||||
msgstr "Добавление колонок"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737
|
||||
msgid "Add/remove your own columns to the calibre book list"
|
||||
msgstr "Добавление/удаление личных колонок в списке книг"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742
|
||||
msgid "Customize the toolbar"
|
||||
msgstr "Настройка панели инструментов"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748
|
||||
msgid ""
|
||||
"Customize the toolbars and context menus, changing which actions are "
|
||||
"available in each"
|
||||
msgstr ""
|
||||
"Настройка панели инструментов и контекстных меню, выбор доступных команд"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754
|
||||
msgid "Input Options"
|
||||
msgstr "Параметры импорта"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:756
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:767
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:778
|
||||
msgid "Conversion"
|
||||
msgstr "Преобразование"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760
|
||||
msgid "Set conversion options specific to each input format"
|
||||
msgstr "Установка параметров импорта, специфичных для каждого формата"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765
|
||||
msgid "Common Options"
|
||||
msgstr "Общие настройки"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771
|
||||
msgid "Set conversion options common to all formats"
|
||||
msgstr "Установка общих для всех форматов параметров конвертации"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776
|
||||
msgid "Output Options"
|
||||
msgstr "Выходные параметры"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782
|
||||
msgid "Set conversion options specific to each output format"
|
||||
msgstr "Установка параметров экспорта, специфичных для каждого формата"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787
|
||||
msgid "Adding books"
|
||||
msgstr "Добавление книг"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:789
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:801
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:813
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:825
|
||||
msgid "Import/Export"
|
||||
msgstr "Импорт/Экспорт"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793
|
||||
msgid "Control how calibre reads metadata from files when adding books"
|
||||
msgstr "Настройки чтения метаданных из добавляемых в библиотеку книг"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799
|
||||
msgid "Saving books to disk"
|
||||
msgstr "Сохранить книги на диск"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805
|
||||
msgid ""
|
||||
"Control how calibre exports files from its database to disk when using Save "
|
||||
"to disk"
|
||||
msgstr "Настройки записи книг из базы данных на диск"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811
|
||||
msgid "Sending books to devices"
|
||||
msgstr "Отправить книги на устройство"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817
|
||||
msgid "Control how calibre transfers files to your ebook reader"
|
||||
msgstr "Контроль передачи книжек на устройство"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823
|
||||
msgid "Metadata plugboards"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829
|
||||
msgid "Change metadata fields before saving/sending"
|
||||
msgstr "Изменять поля метаданных до сохранения/отправки"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834
|
||||
msgid "Sharing books by email"
|
||||
msgstr "Отправить книжку по e-mail"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:836
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:848
|
||||
msgid "Sharing"
|
||||
msgstr "Общий доступ к файлам"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840
|
||||
msgid ""
|
||||
"Setup sharing of books via email. Can be used for automatic sending of "
|
||||
"downloaded news to your devices"
|
||||
@ -402,11 +402,11 @@ msgstr ""
|
||||
"Настройка рассылки книг по e-mail. Может быть использована для "
|
||||
"автоматической доставки загруженных новостных лент на устройство"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846
|
||||
msgid "Sharing over the net"
|
||||
msgstr "Сетевой доступ"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852
|
||||
msgid ""
|
||||
"Setup the calibre Content Server which will give you access to your calibre "
|
||||
"library from anywhere, on any device, over the internet"
|
||||
@ -414,33 +414,33 @@ msgstr ""
|
||||
"Настройка http-сервера calibre, предоставляющего доступ к библиотеке с "
|
||||
"любого устройства, подключенного к сети интернет"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859
|
||||
msgid "Plugins"
|
||||
msgstr "Модули"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:873
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:884
|
||||
msgid "Advanced"
|
||||
msgstr "Расширенный"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865
|
||||
msgid "Add/remove/customize various bits of calibre functionality"
|
||||
msgstr "Добавить/удалить/изменить различные части функциональности calibre"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871
|
||||
msgid "Tweaks"
|
||||
msgstr "Расширенные настройки"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877
|
||||
msgid "Fine tune how calibre behaves in various contexts"
|
||||
msgstr "Тонкая настройка поведения calibre при различных контекстах"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882
|
||||
msgid "Miscellaneous"
|
||||
msgstr "Разное"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888
|
||||
msgid "Miscellaneous advanced configuration"
|
||||
msgstr "Различная продвинутая конфигурация"
|
||||
|
||||
@ -602,7 +602,7 @@ msgstr ""
|
||||
msgid "This profile is intended for the Amazon Kindle DX."
|
||||
msgstr "Профиль для Amazon Kindle DX."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:663
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:664
|
||||
msgid "This profile is intended for the Sanda Bambook."
|
||||
msgstr "Этот профиль предназначен для Sanda Bambook."
|
||||
|
||||
@ -1006,11 +1006,11 @@ msgstr "Соединиться с Kogan"
|
||||
msgid "Communicate with the Pandigital Novel"
|
||||
msgstr "Соединиться с Pandigital Novel"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:130
|
||||
msgid "Communicate with the VelocityMicro"
|
||||
msgstr "Подключиться к VelocityMicro"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:142
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:148
|
||||
msgid "Communicate with the GM2000"
|
||||
msgstr "Подключиться к GM2000"
|
||||
|
||||
@ -1071,11 +1071,15 @@ msgstr "Соединиться с Teclast K3/K5"
|
||||
msgid "Communicate with the Newsmy reader."
|
||||
msgstr "Соединиться с Newsmy"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47
|
||||
msgid "Communicate with the Pico reader."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57
|
||||
msgid "Communicate with the iPapyrus reader."
|
||||
msgstr "Соединиться с iPapyrus"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:59
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68
|
||||
msgid "Communicate with the Sovos reader."
|
||||
msgstr "Подключиться к Sovos"
|
||||
|
||||
@ -2003,7 +2007,7 @@ msgstr ""
|
||||
"полей по краям."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:170
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:205
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:203
|
||||
msgid "Start"
|
||||
msgstr "Начать"
|
||||
|
||||
@ -2396,7 +2400,7 @@ msgstr "Да"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:380
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:930
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570
|
||||
msgid "Title"
|
||||
msgstr "Заголовок"
|
||||
|
||||
@ -2440,7 +2444,7 @@ msgstr "Комментарии"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1134
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:608
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:618
|
||||
msgid "Tags"
|
||||
msgstr "Теги"
|
||||
|
||||
@ -2863,7 +2867,7 @@ msgstr "Варианты создания HTML содержания"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:153
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:606
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:616
|
||||
msgid "Rating"
|
||||
msgstr "Оценка"
|
||||
|
||||
@ -3225,13 +3229,13 @@ msgstr ""
|
||||
"Преобразуйте его в HTML и попробуйте еще раз\n"
|
||||
"%s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:32
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:25
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23
|
||||
msgid ""
|
||||
"Specify the character encoding of the output document. The default is utf-8."
|
||||
msgstr "Укажите кодировку для создаваемого документа. По умолчанию utf-8."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:29
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38
|
||||
msgid ""
|
||||
"The maximum number of characters per line. This splits on the first space "
|
||||
@ -3246,17 +3250,34 @@ msgstr ""
|
||||
"строке превысит указанное. Минимально возможное значение - 25 символов. "
|
||||
"Укажите 0 для запрета переноса строк."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:36
|
||||
msgid ""
|
||||
"Specify whether or not to insert an empty line between two paragraphs."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:40
|
||||
msgid ""
|
||||
"Specify whether or not to insert two space characters to indent the first "
|
||||
"line of each paragraph."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:44
|
||||
msgid ""
|
||||
"Specify whether or not to hide the chapter title for each chapter. Useful "
|
||||
"for image-only output (eg. comics)."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:122
|
||||
msgid "Start Page"
|
||||
msgstr "Начальная страница"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:132
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:134
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:136
|
||||
msgid "Cover Pages"
|
||||
msgstr "Обложки"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:149
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:152
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:147
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:150
|
||||
msgid " (Preface)"
|
||||
msgstr " (Предисловие)"
|
||||
|
||||
@ -3424,7 +3445,7 @@ msgid "Disable UI animations"
|
||||
msgstr "Отключить анимацию пользовальского интерфейса"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:487
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:494
|
||||
msgid "Copied"
|
||||
msgstr "Скопирована"
|
||||
|
||||
@ -3436,7 +3457,7 @@ msgstr "Копировать"
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "Копирования в буфер обмена"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:466
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:467
|
||||
msgid "Choose Files"
|
||||
msgstr "Выберите файлы"
|
||||
|
||||
@ -4316,7 +4337,7 @@ msgid "Click the show details button to see which ones."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:613
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623
|
||||
msgid "Show book details"
|
||||
msgstr "Показать подробности"
|
||||
|
||||
@ -4771,7 +4792,7 @@ msgstr "вывод"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51
|
||||
@ -5651,6 +5672,18 @@ msgstr "Использовать сохраненные настройки пр
|
||||
msgid "SNB Output"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:40
|
||||
msgid "Hide chapter name"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41
|
||||
msgid "Insert space before the first line for each paragraph"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42
|
||||
msgid "Insert empty line between paragraphs"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
|
||||
msgid ""
|
||||
"Structure\n"
|
||||
@ -6040,8 +6073,8 @@ msgid "Send and delete from library"
|
||||
msgstr "Отправить и удалить из библиотеки"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492
|
||||
msgid "Send specific format"
|
||||
msgstr "Отправить определенный формат"
|
||||
msgid "Send specific format to"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:528
|
||||
msgid "Eject device"
|
||||
@ -6368,7 +6401,7 @@ msgid "No location selected"
|
||||
msgstr "Путь не выбран"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:628
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:635
|
||||
msgid "Bad location"
|
||||
msgstr "Неправильный путь"
|
||||
|
||||
@ -6447,7 +6480,7 @@ msgstr ""
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:932
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
msgid "Date"
|
||||
msgstr "Дата"
|
||||
|
||||
@ -7043,72 +7076,74 @@ msgid "This ISBN number is invalid"
|
||||
msgstr "Этот номер ISBN недопустим"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611
|
||||
msgid "Cannot use tag editor"
|
||||
msgstr "Не возможно использовать редактор тэгов"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612
|
||||
msgid "The tags editor cannot be used if you have modified the tags"
|
||||
msgid "Tags changed"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:632
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612
|
||||
msgid ""
|
||||
"You have changed the tags. In order to use the tags editor, you must either "
|
||||
"discard or apply these changes"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:639
|
||||
msgid "Downloading cover..."
|
||||
msgstr "Загрузка обложки..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:649
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:655
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:667
|
||||
msgid "Cannot fetch cover"
|
||||
msgstr "Не могу получить обложку"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:652
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:663
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:668
|
||||
msgid "<b>Could not fetch cover.</b><br/>"
|
||||
msgstr "<b>Не могу получить обложку.</b><br/>"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:653
|
||||
msgid "The download timed out."
|
||||
msgstr "Таймаут загрузки"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:650
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657
|
||||
msgid "Could not find cover for this book. Try specifying the ISBN first."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669
|
||||
msgid ""
|
||||
"For the error message from each cover source, click Show details below."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676
|
||||
msgid "Bad cover"
|
||||
msgstr "Плохая обложка"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:670
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:677
|
||||
msgid "The cover is not a valid picture"
|
||||
msgstr "Обложка с неправильной картинкой"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:703
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:710
|
||||
msgid "There were errors"
|
||||
msgstr "Произошли ошибки"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:704
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:711
|
||||
msgid "There were errors downloading social metadata"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:742
|
||||
msgid "Cannot fetch metadata"
|
||||
msgstr "Не могу доставить метаданные"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:736
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:743
|
||||
msgid "You must specify at least one of ISBN, Title, Authors or Publisher"
|
||||
msgstr "Нужно указаить ISBN, название, автора или издателя"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:823
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:833
|
||||
msgid "Permission denied"
|
||||
msgstr "Доступ запрещён"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:824
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:834
|
||||
msgid "Could not open %s. Is it being used by another program?"
|
||||
msgstr ""
|
||||
|
||||
@ -8412,7 +8447,7 @@ msgid "Do not check for updates"
|
||||
msgstr "Не проверять наличие обновлений"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:58
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:643
|
||||
msgid "Calibre Library"
|
||||
msgstr ""
|
||||
|
||||
@ -8572,7 +8607,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:287
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:612
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:622
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
@ -10467,59 +10502,59 @@ msgstr "Скрыть"
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:378
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:385
|
||||
msgid ""
|
||||
"If you use the WordPlayer e-book app on your Android phone, you can access "
|
||||
"your calibre book collection directly on the device. To do this you have to "
|
||||
"turn on the content server."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:382
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:389
|
||||
msgid ""
|
||||
"Remember to leave calibre running as the server only runs as long as calibre "
|
||||
"is running."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:384
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:391
|
||||
msgid ""
|
||||
"You have to add the URL http://myhostname:8080 as your calibre library in "
|
||||
"WordPlayer. Here myhostname should be the fully qualified hostname or the IP "
|
||||
"address of the computer calibre is running on."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:461
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:468
|
||||
msgid "Moving library..."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:477
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:478
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485
|
||||
msgid "Failed to move library"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:532
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:539
|
||||
msgid "Invalid database"
|
||||
msgstr "Неверная база данных"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:533
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:540
|
||||
msgid ""
|
||||
"<p>An invalid library already exists at %s, delete it before trying to move "
|
||||
"the existing library.<br>Error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:544
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:551
|
||||
msgid "Could not move library"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:622
|
||||
msgid "Select location for books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:629
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636
|
||||
msgid ""
|
||||
"You must choose an empty folder for the calibre library. %s is not empty."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:703
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:710
|
||||
msgid "welcome wizard"
|
||||
msgstr ""
|
||||
|
||||
@ -11774,12 +11809,18 @@ msgid ""
|
||||
"disable grouping."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/base.py:131
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:48
|
||||
msgid ""
|
||||
"Prefix to prepend to all URLs. Useful for reverseproxying to this server "
|
||||
"from Apache/nginx/etc."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/base.py:149
|
||||
msgid "Password to access your calibre library. Username is "
|
||||
msgstr "Пароль для доступа в библиотеку. Имя пользователя "
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:399
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:401
|
||||
msgid "Loading, please wait"
|
||||
msgstr ""
|
||||
|
||||
@ -11824,74 +11865,74 @@ msgstr ""
|
||||
msgid "Sort by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:307
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:505
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:512
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
msgid "Newest"
|
||||
msgstr "Самый новый"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:506
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:309
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:513
|
||||
msgid "All books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:340
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341
|
||||
msgid "Browse books by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:345
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:346
|
||||
msgid "Choose a category to browse by:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:418
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:421
|
||||
msgid "Browsing by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:419
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:422
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:535
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:543
|
||||
msgid "in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:538
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:546
|
||||
msgid "Books in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:588
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:597
|
||||
msgid "Other formats"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:595
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:604
|
||||
msgid "Read %s in the %s format"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:600
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:609
|
||||
msgid "Get"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:614
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:624
|
||||
msgid "Permalink"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625
|
||||
msgid "A permanent link to this book"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:626
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:636
|
||||
msgid "This book has been deleted"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:707
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:720
|
||||
msgid "in search"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:709
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:722
|
||||
msgid "Matching books"
|
||||
msgstr "Соответствие книг"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:39
|
||||
msgid ""
|
||||
"[options]\n"
|
||||
"\n"
|
||||
@ -11904,15 +11945,15 @@ msgid ""
|
||||
"The OPDS interface is advertised via BonJour automatically.\n"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:41
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:52
|
||||
msgid "Path to the library folder to serve with the content server"
|
||||
msgstr "Путь к папке библиотеки, для обслуживания сервером"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:43
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:54
|
||||
msgid "Write process PID to the specified file"
|
||||
msgstr "Записать PID процесса в указанный файл"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:58
|
||||
msgid ""
|
||||
"Specifies a restriction to be used for this invocation. This option "
|
||||
"overrides any per-library settings specified in the GUI"
|
||||
@ -12249,87 +12290,87 @@ msgstr "Не загружать последнюю версию встроенн
|
||||
msgid "Unknown News Source"
|
||||
msgstr "Неизвестный новостной ресурс"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614
|
||||
msgid "The \"%s\" recipe needs a username and password."
|
||||
msgstr "Рецепт \"%s\" требует имя пользожателя и пароль"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:714
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:713
|
||||
msgid "Download finished"
|
||||
msgstr "Закачка завершена"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:716
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715
|
||||
msgid "Failed to download the following articles:"
|
||||
msgstr "Неудачная загрузка следующих статей:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:722
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721
|
||||
msgid "Failed to download parts of the following articles:"
|
||||
msgstr "Неудачная загрузка частей следующих статей:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:724
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:723
|
||||
msgid " from "
|
||||
msgstr " из "
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:726
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:725
|
||||
msgid "\tFailed links:"
|
||||
msgstr "\tБитые ссылки:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:815
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:814
|
||||
msgid "Could not fetch article. Run with -vv to see the reason"
|
||||
msgstr "Не может быть вызвана статья. Запустите с -w чтобы увидеть причину."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835
|
||||
msgid "Fetching feeds..."
|
||||
msgstr "Вызываются заготовки..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840
|
||||
msgid "Got feeds from index page"
|
||||
msgstr "Получить заготовки для оглавления"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:850
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:849
|
||||
msgid "Trying to download cover..."
|
||||
msgstr "Попытка скачать обложку..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:852
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851
|
||||
msgid "Generating masthead..."
|
||||
msgstr "Создаем титульные данные..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:933
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:932
|
||||
msgid "Starting download [%d thread(s)]..."
|
||||
msgstr "Начало загрузки [%d поток(и)]..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:949
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:948
|
||||
msgid "Feeds downloaded to %s"
|
||||
msgstr "Заготовки закачиватся в %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:958
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:957
|
||||
msgid "Could not download cover: %s"
|
||||
msgstr "Невозможно скачать обложку: %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:965
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:964
|
||||
msgid "Downloading cover from %s"
|
||||
msgstr "Скачивается обложка из %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009
|
||||
msgid "Masthead image downloaded"
|
||||
msgstr "Выходные данные изображения загрузили"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1178
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1177
|
||||
msgid "Untitled Article"
|
||||
msgstr "Статья без названия"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1248
|
||||
msgid "Article downloaded: %s"
|
||||
msgstr "Статья скачена: %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1259
|
||||
msgid "Article download failed: %s"
|
||||
msgstr "Ошибка загрузки статьи: %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1277
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1276
|
||||
msgid "Fetching feed"
|
||||
msgstr "Доставляется материал"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1424
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1423
|
||||
msgid ""
|
||||
"Failed to log in, check your username and password for the calibre "
|
||||
"Periodicals service."
|
||||
@ -12337,7 +12378,7 @@ msgstr ""
|
||||
"Не удалось выполнить вход, проверьте свое имя пользователя и пароль для "
|
||||
"службы Периодических изданий Calibre."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1438
|
||||
msgid ""
|
||||
"You do not have permission to download this issue. Either your subscription "
|
||||
"has expired or you have exceeded the maximum allowed downloads for today."
|
||||
@ -14711,6 +14752,9 @@ msgstr "Не скачивать файлы стилей CSS."
|
||||
#~ msgid "&Saving books"
|
||||
#~ msgstr "&Сохранение книг"
|
||||
|
||||
#~ msgid "Cannot use tag editor"
|
||||
#~ msgstr "Не возможно использовать редактор тэгов"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Automatically create the author sort entry based on the current author entry"
|
||||
#~ msgstr ""
|
||||
@ -14767,6 +14811,9 @@ msgstr "Не скачивать файлы стилей CSS."
|
||||
#~ "навсегда <b>удалены</b> с вашего компьютера.<br><br> Вы <b>уверены</b> что "
|
||||
#~ "хотите продолжить?"
|
||||
|
||||
#~ msgid "Send specific format"
|
||||
#~ msgstr "Отправить определенный формат"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The value <b>%d</b> you have chosen for the content server port is a system "
|
||||
#~ "port. Your operating system <b>may</b> not allow the server to run on this "
|
||||
|
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 ""
|
||||
"Project-Id-Version: calibre\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-10-28 00:31+0000\n"
|
||||
"PO-Revision-Date: 2010-10-29 01:45+0000\n"
|
||||
"Last-Translator: Li Fanxi <Unknown>\n"
|
||||
"POT-Creation-Date: 2010-10-29 19:59+0000\n"
|
||||
"PO-Revision-Date: 2010-10-29 19:52+0000\n"
|
||||
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||
"Language-Team: Simplified Chinese <wanglihao@gmail.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-10-29 05:26+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-10-30 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Poedit-Country: CHINA\n"
|
||||
"X-Poedit-Language: Chinese\n"
|
||||
@ -40,8 +40,8 @@ msgstr "不做任何处理"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:407
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:70
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:72
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:93
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:95
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:336
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:339
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894
|
||||
@ -56,7 +56,7 @@ msgstr "不做任何处理"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:606
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:50
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:333
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64
|
||||
@ -147,7 +147,7 @@ msgstr "不做任何处理"
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2161
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2163
|
||||
#: /home/kovid/work/calibre/src/calibre/library/database2.py:2295
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:224
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:228
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:139
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:142
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:78
|
||||
@ -262,171 +262,171 @@ msgstr "设置 %s 文件的元数据"
|
||||
msgid "Set metadata from %s files"
|
||||
msgstr "从 %s 文件设置元数据"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:706
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708
|
||||
msgid "Look and Feel"
|
||||
msgstr "外表和感受"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:708
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:710
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:722
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:733
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:744
|
||||
msgid "Interface"
|
||||
msgstr "界面"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:712
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:714
|
||||
msgid "Adjust the look and feel of the calibre interface to suit your tastes"
|
||||
msgstr "调整成你喜欢的外观"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:718
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:720
|
||||
msgid "Behavior"
|
||||
msgstr "操作方式"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:724
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:726
|
||||
msgid "Change the way calibre behaves"
|
||||
msgstr "改变calibre的操作方式"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:729
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:731
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:202
|
||||
msgid "Add your own columns"
|
||||
msgstr "增加栏目"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:737
|
||||
msgid "Add/remove your own columns to the calibre book list"
|
||||
msgstr "向calibre书籍列表中增加或删除你自定义的栏目"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:740
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:742
|
||||
msgid "Customize the toolbar"
|
||||
msgstr "自定义工具栏"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:746
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:748
|
||||
msgid ""
|
||||
"Customize the toolbars and context menus, changing which actions are "
|
||||
"available in each"
|
||||
msgstr "自定义工具栏和上下文菜单,设置它们所可以提供的功能"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:752
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754
|
||||
msgid "Input Options"
|
||||
msgstr "输入选项"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:754
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:756
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:767
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:778
|
||||
msgid "Conversion"
|
||||
msgstr "转换"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:758
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760
|
||||
msgid "Set conversion options specific to each input format"
|
||||
msgstr "设置针对特定输入格式的转换选项"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:763
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765
|
||||
msgid "Common Options"
|
||||
msgstr "常规选项"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:769
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771
|
||||
msgid "Set conversion options common to all formats"
|
||||
msgstr "设置所有输入格式共有的转换选项"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:774
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776
|
||||
msgid "Output Options"
|
||||
msgstr "输出选项"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:782
|
||||
msgid "Set conversion options specific to each output format"
|
||||
msgstr "设置针对特定输出格式的转换选项"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787
|
||||
msgid "Adding books"
|
||||
msgstr "增加图书"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:787
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:789
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:801
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:813
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:825
|
||||
msgid "Import/Export"
|
||||
msgstr "导入/导出"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:793
|
||||
msgid "Control how calibre reads metadata from files when adding books"
|
||||
msgstr "控制向calibre添加书籍时读取元数据的方式"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:797
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:799
|
||||
msgid "Saving books to disk"
|
||||
msgstr "保存图书到磁盘"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:803
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805
|
||||
msgid ""
|
||||
"Control how calibre exports files from its database to disk when using Save "
|
||||
"to disk"
|
||||
msgstr "控制使用“保存到磁盘”功能时calibre从数据库导出文件的方式"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:809
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811
|
||||
msgid "Sending books to devices"
|
||||
msgstr "发送图书到设备"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:817
|
||||
msgid "Control how calibre transfers files to your ebook reader"
|
||||
msgstr "控制calibre将文件传输到电子阅读器的方式"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:823
|
||||
msgid "Metadata plugboards"
|
||||
msgstr "元数据控制板"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:829
|
||||
msgid "Change metadata fields before saving/sending"
|
||||
msgstr "保存或发送前更改元数据域"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:832
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834
|
||||
msgid "Sharing books by email"
|
||||
msgstr "通过Email分享图书"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:834
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:836
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:848
|
||||
msgid "Sharing"
|
||||
msgstr "分享"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:838
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840
|
||||
msgid ""
|
||||
"Setup sharing of books via email. Can be used for automatic sending of "
|
||||
"downloaded news to your devices"
|
||||
msgstr "设置通过电子邮件分享图书。可用于在向阅读器下载新内容时自动发送通知。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:844
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846
|
||||
msgid "Sharing over the net"
|
||||
msgstr "通过网络分享"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:850
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852
|
||||
msgid ""
|
||||
"Setup the calibre Content Server which will give you access to your calibre "
|
||||
"library from anywhere, on any device, over the internet"
|
||||
msgstr "设置calibre内容服务器以便通过网络在任何设备和地点访问到calibre书库。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859
|
||||
msgid "Plugins"
|
||||
msgstr "插件"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:859
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:861
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:873
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:884
|
||||
msgid "Advanced"
|
||||
msgstr "高级"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:865
|
||||
msgid "Add/remove/customize various bits of calibre functionality"
|
||||
msgstr "添回/删除/自定义各种calibre功能"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:869
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:871
|
||||
msgid "Tweaks"
|
||||
msgstr "优化调整"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:875
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:877
|
||||
msgid "Fine tune how calibre behaves in various contexts"
|
||||
msgstr "微调calibre在各种情况下的行为"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:880
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:882
|
||||
msgid "Miscellaneous"
|
||||
msgstr "杂项"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:886
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888
|
||||
msgid "Miscellaneous advanced configuration"
|
||||
msgstr "其它高级选项"
|
||||
|
||||
@ -574,7 +574,7 @@ msgstr "该配置文件适用 SONY PRS 产品线,如 500/505/700 型号等,
|
||||
msgid "This profile is intended for the Amazon Kindle DX."
|
||||
msgstr "该配置文件适用 Amazon Kindle DX。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:663
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:664
|
||||
msgid "This profile is intended for the Sanda Bambook."
|
||||
msgstr "该配置文件适用于盛大锦书(Bambook)。"
|
||||
|
||||
@ -970,11 +970,11 @@ msgstr "与 Kogan 通信"
|
||||
msgid "Communicate with the Pandigital Novel"
|
||||
msgstr "与Pandigital Novel通信"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:130
|
||||
msgid "Communicate with the VelocityMicro"
|
||||
msgstr "与VelocityMicro进行通讯"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:142
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/misc.py:148
|
||||
msgid "Communicate with the GM2000"
|
||||
msgstr "与 GM2000 通信"
|
||||
|
||||
@ -1033,11 +1033,15 @@ msgstr "与 Teclast K3/K5 阅读器通信。"
|
||||
msgid "Communicate with the Newsmy reader."
|
||||
msgstr "与Newsmy阅读器通信。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:47
|
||||
msgid "Communicate with the Pico reader."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:57
|
||||
msgid "Communicate with the iPapyrus reader."
|
||||
msgstr "与iPapyrus阅读器通信。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:59
|
||||
#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68
|
||||
msgid "Communicate with the Sovos reader."
|
||||
msgstr "与 Sovos 阅读器通信。"
|
||||
|
||||
@ -1827,7 +1831,7 @@ msgstr ""
|
||||
"是图像本身不会被扭曲变形。不选该选项的话,图像可能会产生轻微的扭曲变形,但优点是不会出现空白边界。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:170
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:205
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:203
|
||||
msgid "Start"
|
||||
msgstr "开始"
|
||||
|
||||
@ -2193,7 +2197,7 @@ msgstr "是"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:380
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:930
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:303
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:570
|
||||
msgid "Title"
|
||||
msgstr "标题"
|
||||
|
||||
@ -2237,7 +2241,7 @@ msgstr "注释"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:320
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1134
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:160
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:608
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:618
|
||||
msgid "Tags"
|
||||
msgstr "标签"
|
||||
|
||||
@ -2642,7 +2646,7 @@ msgstr "HTML 目录生成选项。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:153
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:71
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:606
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:616
|
||||
msgid "Rating"
|
||||
msgstr "评分"
|
||||
|
||||
@ -2981,13 +2985,13 @@ msgstr ""
|
||||
"RTF 文件有 calibre 不支持的特性。先转换到 HTML 再试。\n"
|
||||
"%s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:32
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:25
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23
|
||||
msgid ""
|
||||
"Specify the character encoding of the output document. The default is utf-8."
|
||||
msgstr "指定输出文档的字符集编码。默认为 utf-8。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:29
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38
|
||||
msgid ""
|
||||
"The maximum number of characters per line. This splits on the first space "
|
||||
@ -2997,17 +3001,34 @@ msgid ""
|
||||
msgstr ""
|
||||
"每行最多容纳字符数。程序将会自动寻找行中最后一个空格换行。如果行内无空格,则行宽将会超过超越此值,在下个空格处换行。此外,最小值为25。使用 0 禁用分行"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:124
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:36
|
||||
msgid ""
|
||||
"Specify whether or not to insert an empty line between two paragraphs."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:40
|
||||
msgid ""
|
||||
"Specify whether or not to insert two space characters to indent the first "
|
||||
"line of each paragraph."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:44
|
||||
msgid ""
|
||||
"Specify whether or not to hide the chapter title for each chapter. Useful "
|
||||
"for image-only output (eg. comics)."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:122
|
||||
msgid "Start Page"
|
||||
msgstr "起始页"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:132
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:134
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:136
|
||||
msgid "Cover Pages"
|
||||
msgstr "封面"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:149
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:152
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:147
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/snb/output.py:150
|
||||
msgid " (Preface)"
|
||||
msgstr " 引言"
|
||||
|
||||
@ -3166,7 +3187,7 @@ msgid "Disable UI animations"
|
||||
msgstr "禁用界面动画"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:183
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:487
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:494
|
||||
msgid "Copied"
|
||||
msgstr "已复制"
|
||||
|
||||
@ -3178,7 +3199,7 @@ msgstr "复制"
|
||||
msgid "Copy to Clipboard"
|
||||
msgstr "复制到剪贴板"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:466
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:467
|
||||
msgid "Choose Files"
|
||||
msgstr "选择文件"
|
||||
|
||||
@ -4047,7 +4068,7 @@ msgid "Click the show details button to see which ones."
|
||||
msgstr "点击显示详情按钮查看具体哪些。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/actions/show_book_details.py:16
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:613
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:623
|
||||
msgid "Show book details"
|
||||
msgstr "显示书籍详情"
|
||||
|
||||
@ -4482,7 +4503,7 @@ msgstr "输出"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:39
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:80
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51
|
||||
@ -5337,6 +5358,18 @@ msgstr "为指定书籍使用已存转换设定(&S)"
|
||||
msgid "SNB Output"
|
||||
msgstr "SNB 输出"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:40
|
||||
msgid "Hide chapter name"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:41
|
||||
msgid "Insert space before the first line for each paragraph"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42
|
||||
msgid "Insert empty line between paragraphs"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17
|
||||
msgid ""
|
||||
"Structure\n"
|
||||
@ -5727,8 +5760,8 @@ msgid "Send and delete from library"
|
||||
msgstr "发送并从书库中删除"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:492
|
||||
msgid "Send specific format"
|
||||
msgstr "发送指定格式"
|
||||
msgid "Send specific format to"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/device.py:528
|
||||
msgid "Eject device"
|
||||
@ -6049,7 +6082,7 @@ msgid "No location selected"
|
||||
msgstr "没有选择位置"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:84
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:628
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:635
|
||||
msgid "Bad location"
|
||||
msgstr "错误的位置"
|
||||
|
||||
@ -6128,7 +6161,7 @@ msgstr "位置"
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:932
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:31
|
||||
#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:294
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
msgid "Date"
|
||||
msgstr "日期"
|
||||
|
||||
@ -6722,72 +6755,74 @@ msgid "This ISBN number is invalid"
|
||||
msgstr "ISBN 编号无效"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611
|
||||
msgid "Cannot use tag editor"
|
||||
msgstr "无法使用标签编辑器"
|
||||
msgid "Tags changed"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612
|
||||
msgid "The tags editor cannot be used if you have modified the tags"
|
||||
msgstr "如果你已经修改了标签,那么标签编辑器就无法使用"
|
||||
msgid ""
|
||||
"You have changed the tags. In order to use the tags editor, you must either "
|
||||
"discard or apply these changes"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:632
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:639
|
||||
msgid "Downloading cover..."
|
||||
msgstr "正在下载封面..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:644
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:649
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:655
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:660
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:651
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:667
|
||||
msgid "Cannot fetch cover"
|
||||
msgstr "无法抓取封面"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:656
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:661
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:652
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:663
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:668
|
||||
msgid "<b>Could not fetch cover.</b><br/>"
|
||||
msgstr "<b>无法抓取封面。</b><br/>"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:646
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:653
|
||||
msgid "The download timed out."
|
||||
msgstr "下载超时。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:650
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:657
|
||||
msgid "Could not find cover for this book. Try specifying the ISBN first."
|
||||
msgstr "无法找到书籍对应的封面。请尝试首先指定 ISBN。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:662
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669
|
||||
msgid ""
|
||||
"For the error message from each cover source, click Show details below."
|
||||
msgstr "每个封面源文件中的错误信息,点击在下边查看详情"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:669
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:676
|
||||
msgid "Bad cover"
|
||||
msgstr "非法封面"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:670
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:677
|
||||
msgid "The cover is not a valid picture"
|
||||
msgstr "封面不是有效图片"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:703
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:710
|
||||
msgid "There were errors"
|
||||
msgstr "出错"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:704
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:711
|
||||
msgid "There were errors downloading social metadata"
|
||||
msgstr "下载社会性元数据出错"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:735
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:742
|
||||
msgid "Cannot fetch metadata"
|
||||
msgstr "无法抓取元数据"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:736
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:743
|
||||
msgid "You must specify at least one of ISBN, Title, Authors or Publisher"
|
||||
msgstr "您必须设定 ISBN,标题,作者或出版商中的至少一个条件"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:823
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:833
|
||||
msgid "Permission denied"
|
||||
msgstr "权限拒绝"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:824
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:834
|
||||
msgid "Could not open %s. Is it being used by another program?"
|
||||
msgstr "无法打开 %s。它是否被其它程序占用。"
|
||||
|
||||
@ -8092,7 +8127,7 @@ msgid "Do not check for updates"
|
||||
msgstr "不检测更新"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/main.py:58
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:643
|
||||
msgid "Calibre Library"
|
||||
msgstr "Calibre 书库"
|
||||
|
||||
@ -8249,7 +8284,7 @@ msgid "Successfully downloaded metadata for %d out of %d books"
|
||||
msgstr "成功下载%d本书的元数据(共%d本)"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/metadata.py:287
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:612
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:622
|
||||
msgid "Details"
|
||||
msgstr ""
|
||||
|
||||
@ -10101,7 +10136,7 @@ msgstr "隐藏"
|
||||
msgid "Toggle"
|
||||
msgstr "触发器"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:378
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:385
|
||||
msgid ""
|
||||
"If you use the WordPlayer e-book app on your Android phone, you can access "
|
||||
"your calibre book collection directly on the device. To do this you have to "
|
||||
@ -10109,13 +10144,13 @@ msgid ""
|
||||
msgstr ""
|
||||
"若您使用 Android 手机上的 WordPlayer 电子书程序,您可以用设备直接访问您的 Calibre 书库。这需要您打开内容服务器。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:382
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:389
|
||||
msgid ""
|
||||
"Remember to leave calibre running as the server only runs as long as calibre "
|
||||
"is running."
|
||||
msgstr "请记住保持 Calibre 运行,如此它才能一直提供服务。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:384
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:391
|
||||
msgid ""
|
||||
"You have to add the URL http://myhostname:8080 as your calibre library in "
|
||||
"WordPlayer. Here myhostname should be the fully qualified hostname or the IP "
|
||||
@ -10124,39 +10159,39 @@ msgstr ""
|
||||
"您需要将 URL http://myhostname:8080 添加到您 WordPlayer 中的 Calibre 书库。此处 myhostname "
|
||||
"应为有效主机名或者您运行 Calibre 电脑的 IP 地址。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:461
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:468
|
||||
msgid "Moving library..."
|
||||
msgstr "正在移动书库..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:477
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:478
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:484
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:485
|
||||
msgid "Failed to move library"
|
||||
msgstr "移动书库错误"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:532
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:539
|
||||
msgid "Invalid database"
|
||||
msgstr "无效数据库"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:533
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:540
|
||||
msgid ""
|
||||
"<p>An invalid library already exists at %s, delete it before trying to move "
|
||||
"the existing library.<br>Error: %s"
|
||||
msgstr "<p>在 %s 已有无效书库,在试图移动现有书库前删除它。<br>错误:%s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:544
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:551
|
||||
msgid "Could not move library"
|
||||
msgstr "无法移动书库"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:622
|
||||
msgid "Select location for books"
|
||||
msgstr "选择书籍位置"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:629
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:636
|
||||
msgid ""
|
||||
"You must choose an empty folder for the calibre library. %s is not empty."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:703
|
||||
#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:710
|
||||
msgid "welcome wizard"
|
||||
msgstr "欢迎向导"
|
||||
|
||||
@ -11397,12 +11432,18 @@ msgid ""
|
||||
"disable grouping."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/base.py:131
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:48
|
||||
msgid ""
|
||||
"Prefix to prepend to all URLs. Useful for reverseproxying to this server "
|
||||
"from Apache/nginx/etc."
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/base.py:149
|
||||
msgid "Password to access your calibre library. Username is "
|
||||
msgstr "密码以访问您的 Calibre 书库。用户名为 "
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:399
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:401
|
||||
msgid "Loading, please wait"
|
||||
msgstr ""
|
||||
|
||||
@ -11447,74 +11488,74 @@ msgstr ""
|
||||
msgid "Sort by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:307
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:505
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:568
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:512
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:569
|
||||
msgid "Newest"
|
||||
msgstr "最新"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:308
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:506
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:309
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:513
|
||||
msgid "All books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:340
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341
|
||||
msgid "Browse books by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:345
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:346
|
||||
msgid "Choose a category to browse by:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:418
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:421
|
||||
msgid "Browsing by"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:419
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:422
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:535
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:543
|
||||
msgid "in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:538
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:546
|
||||
msgid "Books in"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:588
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:597
|
||||
msgid "Other formats"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:595
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:604
|
||||
msgid "Read %s in the %s format"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:600
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:609
|
||||
msgid "Get"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:614
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:624
|
||||
msgid "Permalink"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625
|
||||
msgid "A permanent link to this book"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:626
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:636
|
||||
msgid "This book has been deleted"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:707
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:720
|
||||
msgid "in search"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:709
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:722
|
||||
msgid "Matching books"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:28
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:39
|
||||
msgid ""
|
||||
"[options]\n"
|
||||
"\n"
|
||||
@ -11527,15 +11568,15 @@ msgid ""
|
||||
"The OPDS interface is advertised via BonJour automatically.\n"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:41
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:52
|
||||
msgid "Path to the library folder to serve with the content server"
|
||||
msgstr "内容服务器上书库目录路径"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:43
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:54
|
||||
msgid "Write process PID to the specified file"
|
||||
msgstr "指定文件写进程 PID"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:47
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server/main.py:58
|
||||
msgid ""
|
||||
"Specifies a restriction to be used for this invocation. This option "
|
||||
"overrides any per-library settings specified in the GUI"
|
||||
@ -11865,93 +11906,93 @@ msgstr "不从 calire 服务器下载最新订阅清单"
|
||||
msgid "Unknown News Source"
|
||||
msgstr "未知新闻来源"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:615
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:614
|
||||
msgid "The \"%s\" recipe needs a username and password."
|
||||
msgstr "订阅清单“%s”需要用户名与密码。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:714
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:713
|
||||
msgid "Download finished"
|
||||
msgstr "下载完成"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:716
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:715
|
||||
msgid "Failed to download the following articles:"
|
||||
msgstr "下载下列文章失败:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:722
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:721
|
||||
msgid "Failed to download parts of the following articles:"
|
||||
msgstr "下载下列文章的某些部分失败:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:724
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:723
|
||||
msgid " from "
|
||||
msgstr " 自 "
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:726
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:725
|
||||
msgid "\tFailed links:"
|
||||
msgstr "\t失败链接:"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:815
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:814
|
||||
msgid "Could not fetch article. Run with -vv to see the reason"
|
||||
msgstr "无法抓取文章。使用 -vv 选项运行察看原因。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:836
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:835
|
||||
msgid "Fetching feeds..."
|
||||
msgstr "正在抓取源..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:841
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:840
|
||||
msgid "Got feeds from index page"
|
||||
msgstr "从索引页面获取了源"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:850
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:849
|
||||
msgid "Trying to download cover..."
|
||||
msgstr "正在尝试下载封面..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:852
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:851
|
||||
msgid "Generating masthead..."
|
||||
msgstr "正在生成刊头..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:933
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:932
|
||||
msgid "Starting download [%d thread(s)]..."
|
||||
msgstr "开始下载 [ %d 线程数]..."
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:949
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:948
|
||||
msgid "Feeds downloaded to %s"
|
||||
msgstr "新闻源下载到 %s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:958
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:957
|
||||
msgid "Could not download cover: %s"
|
||||
msgstr "无法下载封面:%s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:965
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:964
|
||||
msgid "Downloading cover from %s"
|
||||
msgstr "正在从 %s 下载封面"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1010
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009
|
||||
msgid "Masthead image downloaded"
|
||||
msgstr "已下载刊头图像"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1178
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1177
|
||||
msgid "Untitled Article"
|
||||
msgstr "无标题文章"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1249
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1248
|
||||
msgid "Article downloaded: %s"
|
||||
msgstr "已下载文章:%s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1259
|
||||
msgid "Article download failed: %s"
|
||||
msgstr "下载失败文章:%s"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1277
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1276
|
||||
msgid "Fetching feed"
|
||||
msgstr "抓取源"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1424
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1423
|
||||
msgid ""
|
||||
"Failed to log in, check your username and password for the calibre "
|
||||
"Periodicals service."
|
||||
msgstr "登录失败,检查您 calibre 期刊服务的用户名密码。"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1439
|
||||
#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1438
|
||||
msgid ""
|
||||
"You do not have permission to download this issue. Either your subscription "
|
||||
"has expired or you have exceeded the maximum allowed downloads for today."
|
||||
@ -12468,6 +12509,9 @@ msgstr "不下载 CSS 样式表。"
|
||||
#~ msgid " "
|
||||
#~ msgstr " "
|
||||
|
||||
#~ msgid "Send specific format"
|
||||
#~ msgstr "发送指定格式"
|
||||
|
||||
#~ msgid "Library backup status..."
|
||||
#~ msgstr "书库备份状态..."
|
||||
|
||||
@ -12479,3 +12523,9 @@ msgstr "不下载 CSS 样式表。"
|
||||
|
||||
#~ msgid "Run the check"
|
||||
#~ msgstr "运行检查"
|
||||
|
||||
#~ msgid "Cannot use tag editor"
|
||||
#~ msgstr "无法使用标签编辑器"
|
||||
|
||||
#~ msgid "The tags editor cannot be used if you have modified the tags"
|
||||
#~ msgstr "如果你已经修改了标签,那么标签编辑器就无法使用"
|
||||
|
98
src/calibre/utils/browser.py
Normal file
98
src/calibre/utils/browser.py
Normal file
@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env python
|
||||
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
import copy
|
||||
from cookielib import CookieJar
|
||||
|
||||
from mechanize import Browser as B
|
||||
|
||||
class Browser(B):
|
||||
'A cloneable mechanize browser'
|
||||
|
||||
def __init__(self):
|
||||
self._clone_actions = {}
|
||||
|
||||
B.__init__(self)
|
||||
self.set_cookiejar(CookieJar())
|
||||
|
||||
def set_handle_refresh(self, *args, **kwargs):
|
||||
B.set_handle_refresh(self, *args, **kwargs)
|
||||
self._clone_actions['set_handle_refresh'] = ('set_handle_refresh',
|
||||
args, kwargs)
|
||||
|
||||
def set_cookiejar(self, *args, **kwargs):
|
||||
B.set_cookiejar(self, *args, **kwargs)
|
||||
self._clone_actions['set_cookiejar'] = ('set_cookiejar', args, kwargs)
|
||||
|
||||
def set_handle_redirect(self, *args, **kwargs):
|
||||
B.set_handle_redirect(self, *args, **kwargs)
|
||||
self._clone_actions['set_handle_redirect'] = ('set_handle_redirect',
|
||||
args, kwargs)
|
||||
|
||||
def set_handle_equiv(self, *args, **kwargs):
|
||||
B.set_handle_equiv(self, *args, **kwargs)
|
||||
self._clone_actions['set_handle_equiv'] = ('set_handle_equiv',
|
||||
args, kwargs)
|
||||
|
||||
def set_handle_gzip(self, *args, **kwargs):
|
||||
B.set_handle_gzip(self, *args, **kwargs)
|
||||
self._clone_actions['set_handle_gzip'] = ('set_handle_gzip',
|
||||
args, kwargs)
|
||||
|
||||
def set_debug_redirect(self, *args, **kwargs):
|
||||
B.set_debug_redirect(self, *args, **kwargs)
|
||||
self._clone_actions['set_debug_redirect'] = ('set_debug_redirect',
|
||||
args, kwargs)
|
||||
|
||||
def set_debug_responses(self, *args, **kwargs):
|
||||
B.set_debug_responses(self, *args, **kwargs)
|
||||
self._clone_actions['set_debug_responses'] = ('set_debug_responses',
|
||||
args, kwargs)
|
||||
|
||||
def set_debug_http(self, *args, **kwargs):
|
||||
B.set_debug_http(self, *args, **kwargs)
|
||||
self._clone_actions['set_debug_http'] = ('set_debug_http',
|
||||
args, kwargs)
|
||||
|
||||
def set_handle_robots(self, *args, **kwargs):
|
||||
B.set_handle_robots(self, *args, **kwargs)
|
||||
self._clone_actions['set_handle_robots'] = ('set_handle_robots',
|
||||
args, kwargs)
|
||||
|
||||
def set_proxies(self, *args, **kwargs):
|
||||
B.set_proxies(self, *args, **kwargs)
|
||||
self._clone_actions['set_proxies'] = ('set_proxies', args, kwargs)
|
||||
|
||||
def add_password(self, *args, **kwargs):
|
||||
B.add_password(self, *args, **kwargs)
|
||||
self._clone_actions['add_password'] = ('add_password', args, kwargs)
|
||||
|
||||
def add_proxy_password(self, *args, **kwargs):
|
||||
B.add_proxy_password(self, *args, **kwargs)
|
||||
self._clone_actions['add_proxy_password'] = ('add_proxy_password', args, kwargs)
|
||||
|
||||
def clone_browser(self):
|
||||
clone = Browser()
|
||||
clone.addheaders = copy.deepcopy(self.addheaders)
|
||||
for func, args, kwargs in self._clone_actions.values():
|
||||
func = getattr(clone, func)
|
||||
func(*args, **kwargs)
|
||||
return clone
|
||||
|
||||
if __name__ == '__main__':
|
||||
from calibre import browser
|
||||
from pprint import pprint
|
||||
orig = browser()
|
||||
clone = orig.clone_browser()
|
||||
pprint( orig._ua_handlers)
|
||||
pprint(clone._ua_handlers)
|
||||
assert orig._ua_handlers.keys() == clone._ua_handlers.keys()
|
||||
assert orig._ua_handlers['_cookies'].cookiejar is \
|
||||
clone._ua_handlers['_cookies'].cookiejar
|
||||
assert orig.addheaders == clone.addheaders
|
||||
|
||||
|
@ -82,9 +82,6 @@ class BasicNewsRecipe(Recipe):
|
||||
#: Automatically reduced to 1 if :attr:`BasicNewsRecipe.delay` > 0
|
||||
simultaneous_downloads = 5
|
||||
|
||||
#: If False the remote server is contacted by only one thread at a time
|
||||
multithreaded_fetch = False
|
||||
|
||||
#: Timeout for fetching files from server in seconds
|
||||
timeout = 120.0
|
||||
|
||||
@ -402,6 +399,23 @@ class BasicNewsRecipe(Recipe):
|
||||
'''
|
||||
return browser(*args, **kwargs)
|
||||
|
||||
def clone_browser(self, br):
|
||||
'''
|
||||
Clone the browser br. Cloned browsers are used for multi-threaded
|
||||
downloads, since mechanize is not thread safe. The default cloning
|
||||
routines should capture most browser customization, but if you do
|
||||
something exotic in your recipe, you should override this method in
|
||||
your recipe and clone manually.
|
||||
|
||||
Cloned browser instances use the same, thread-safe CookieJar by
|
||||
default, unless you have customized cookie handling.
|
||||
'''
|
||||
if callable(getattr(br, 'clone_browser', None)):
|
||||
return br.clone_browser()
|
||||
|
||||
# Uh-oh recipe using something exotic, call get_browser
|
||||
return self.get_browser()
|
||||
|
||||
def get_article_url(self, article):
|
||||
'''
|
||||
Override in a subclass to customize extraction of the :term:`URL` that points
|
||||
@ -798,17 +812,23 @@ class BasicNewsRecipe(Recipe):
|
||||
extra_css=css).render(doctype='xhtml')
|
||||
|
||||
|
||||
def _fetch_article(self, url, dir, f, a, num_of_feeds):
|
||||
self.web2disk_options.browser = self.get_browser() if self.multithreaded_fetch else self.browser
|
||||
def _fetch_article(self, url, dir_, f, a, num_of_feeds):
|
||||
br = self.browser
|
||||
if self.get_browser.im_func is BasicNewsRecipe.get_browser.im_func:
|
||||
# We are using the default get_browser, which means no need to
|
||||
# clone
|
||||
br = BasicNewsRecipe.get_browser(self)
|
||||
else:
|
||||
br = self.clone_browser(self.browser)
|
||||
self.web2disk_options.browser = br
|
||||
fetcher = RecursiveFetcher(self.web2disk_options, self.log,
|
||||
self.image_map, self.css_map,
|
||||
(url, f, a, num_of_feeds))
|
||||
fetcher.base_dir = dir
|
||||
fetcher.current_dir = dir
|
||||
fetcher.browser = br
|
||||
fetcher.base_dir = dir_
|
||||
fetcher.current_dir = dir_
|
||||
fetcher.show_progress = False
|
||||
fetcher.image_url_processor = self.image_url_processor
|
||||
if self.multithreaded_fetch:
|
||||
fetcher.browser_lock = fetcher.DUMMY_LOCK
|
||||
res, path, failures = fetcher.start_fetch(url), fetcher.downloaded_paths, fetcher.failed_links
|
||||
if not res or not os.path.exists(res):
|
||||
raise Exception(_('Could not fetch article. Run with -vv to see the reason'))
|
||||
@ -1387,7 +1407,7 @@ class CustomIndexRecipe(BasicNewsRecipe):
|
||||
def download(self):
|
||||
index = os.path.abspath(self.custom_index())
|
||||
url = 'file:'+index if iswindows else 'file://'+index
|
||||
self.web2disk_options.browser = self.browser
|
||||
self.web2disk_options.browser = self.clone_browser(self.browser)
|
||||
fetcher = RecursiveFetcher(self.web2disk_options, self.log)
|
||||
fetcher.base_dir = self.output_dir
|
||||
fetcher.current_dir = self.output_dir
|
||||
|
@ -86,11 +86,6 @@ class response(str):
|
||||
obj.newurl = None
|
||||
return obj
|
||||
|
||||
class DummyLock(object):
|
||||
|
||||
def __enter__(self, *args): return self
|
||||
def __exit__(self, *args): pass
|
||||
|
||||
def default_is_link_wanted(url, tag):
|
||||
raise NotImplementedError()
|
||||
|
||||
@ -104,7 +99,6 @@ class RecursiveFetcher(object):
|
||||
# )
|
||||
CSS_IMPORT_PATTERN = re.compile(r'\@import\s+url\((.*?)\)', re.IGNORECASE)
|
||||
default_timeout = socket.getdefaulttimeout() # Needed here as it is used in __del__
|
||||
DUMMY_LOCK = DummyLock()
|
||||
|
||||
def __init__(self, options, log, image_map={}, css_map={}, job_info=None):
|
||||
self.base_dir = os.path.abspath(os.path.expanduser(options.dir))
|
||||
|
Loading…
x
Reference in New Issue
Block a user