diff --git a/Changelog.yaml b/Changelog.yaml index afe40af4b3..50ea7d1e6d 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -19,6 +19,57 @@ # new recipes: # - title: +- version: 0.9.13 + date: 2013-01-04 + + new features: + - title: "Complete rewrite of the PDF Output engine, to support links and fix various bugs" + type: major + description: "calibre now has a new PDF output engine that supports links in the text. It also fixes various bugs, detailed below. In order to implement support for links and fix these bugs, the engine had to be completely rewritten, so there may be some regressions." + + - title: "Show disabled device plugins in Preferences->Ignored Devices" + + - title: "Get Books: Fix Smashwords, Google books and B&N stores. Add Nook UK store" + + - title: "Allow series numbers lower than -100 for custom series columns." + tickets: [1094475] + + - title: "Add mass storage driver for rockhip based android smart phones" + tickets: [1087809] + + - title: "Add a clear ratings button to the edit metadata dialog" + + bug fixes: + - title: "PDF Output: Fix custom page sizes not working on OS X" + + - title: "PDF Output: Fix embedding of many fonts not supported (note that embedding of OpenType fonts with Postscript outlines is still not supported on windows, though it is supported on other operating systems)" + + - title: "PDF Output: Fix crashes converting some books to PDF on OS X" + tickets: [1087688] + + - title: "HTML Input: Handle entities inside href attributes when following the links in an HTML file." + tickets: [1094203] + + - title: "Content server: Fix custom icons not used for sub categories" + tickets: [1095016] + + - title: "Force use of non-unicode constants in compiled templates. Fixes a problem with regular expression character classes and probably other things." + + - title: "Kobo driver: Do not error out if there are invalid dates in the device database" + tickets: [1094597] + + - title: "Content server: Fix for non-unicode hostnames when using mDNS" + tickets: [1094063] + + improved recipes: + - Today's Zaman + - The Economist + - Foreign Affairs + - New York Times + - Alternet + - Harper's Magazine + - La Stampa + - version: 0.9.12 date: 2012-12-28 diff --git a/manual/faq.rst b/manual/faq.rst index 876a04d601..7c2e411ff6 100644 --- a/manual/faq.rst +++ b/manual/faq.rst @@ -672,6 +672,19 @@ There are three possible things I know of, that can cause this: * The Logitech SetPoint Settings application causes random crashes in |app| when it is open. Close it before starting |app|. +If none of the above apply to you, then there is some other program on your +computer that is interfering with |app|. First reboot your computer is safe +mode, to have as few running programs as possible, and see if the crashes still +happen. If they do not, then you know it is some program causing the problem. +The most likely such culprit is a program that modifies other programs' +behavior, such as an antivirus, a device driver, something like RoboForm (an +automatic form filling app) or an assistive technology like Voice Control or a +Screen Reader. + +The only way to find the culprit is to eliminate the programs one by one and +see which one is causing the issue. Basically, stop a program, run calibre, +check for crashes. If they still happen, stop another program and repeat. + |app| is not starting on OS X? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/recipes/economist.recipe b/recipes/economist.recipe index 25e46892f8..b5e2a1fd9b 100644 --- a/recipes/economist.recipe +++ b/recipes/economist.recipe @@ -70,18 +70,6 @@ class Economist(BasicNewsRecipe): return br ''' - def get_cover_url(self): - soup = self.index_to_soup('http://www.economist.com/printedition/covers') - div = soup.find('div', attrs={'class':lambda x: x and - 'print-cover-links' in x}) - a = div.find('a', href=True) - url = a.get('href') - if url.startswith('/'): - url = 'http://www.economist.com' + url - soup = self.index_to_soup(url) - div = soup.find('div', attrs={'class':'cover-content'}) - img = div.find('img', src=True) - return img.get('src') def parse_index(self): return self.economist_parse_index() @@ -92,7 +80,7 @@ class Economist(BasicNewsRecipe): if div is not None: img = div.find('img', src=True) if img is not None: - self.cover_url = img['src'] + self.cover_url = re.sub('thumbnail','full',img['src']) feeds = OrderedDict() for section in soup.findAll(attrs={'class':lambda x: x and 'section' in x}): diff --git a/recipes/economist_free.recipe b/recipes/economist_free.recipe index a64310c252..b5e2a1fd9b 100644 --- a/recipes/economist_free.recipe +++ b/recipes/economist_free.recipe @@ -9,7 +9,7 @@ from calibre.web.feeds.news import BasicNewsRecipe from calibre.ebooks.BeautifulSoup import Tag, NavigableString from collections import OrderedDict -import time, re +import re class Economist(BasicNewsRecipe): @@ -37,7 +37,6 @@ class Economist(BasicNewsRecipe): padding: 7px 0px 9px; } ''' - oldest_article = 7.0 remove_tags = [ dict(name=['script', 'noscript', 'title', 'iframe', 'cf_floatingcontent']), @@ -46,7 +45,6 @@ class Economist(BasicNewsRecipe): {'class': lambda x: x and 'share-links-header' in x}, ] keep_only_tags = [dict(id='ec-article-body')] - needs_subscription = False no_stylesheets = True preprocess_regexps = [(re.compile('.*', re.DOTALL), lambda x:'')] @@ -55,28 +53,26 @@ class Economist(BasicNewsRecipe): # downloaded with connection reset by peer (104) errors. delay = 1 - def get_cover_url(self): - soup = self.index_to_soup('http://www.economist.com/printedition/covers') - div = soup.find('div', attrs={'class':lambda x: x and - 'print-cover-links' in x}) - a = div.find('a', href=True) - url = a.get('href') - if url.startswith('/'): - url = 'http://www.economist.com' + url - soup = self.index_to_soup(url) - div = soup.find('div', attrs={'class':'cover-content'}) - img = div.find('img', src=True) - return img.get('src') + needs_subscription = False + ''' + def get_browser(self): + br = BasicNewsRecipe.get_browser() + if self.username and self.password: + br.open('http://www.economist.com/user/login') + br.select_form(nr=1) + br['name'] = self.username + br['pass'] = self.password + res = br.submit() + raw = res.read() + if '>Log out<' not in raw: + raise ValueError('Failed to login to economist.com. ' + 'Check your username and password.') + return br + ''' + def parse_index(self): - try: - return self.economist_parse_index() - except: - raise - self.log.warn( - 'Initial attempt to parse index failed, retrying in 30 seconds') - time.sleep(30) - return self.economist_parse_index() + return self.economist_parse_index() def economist_parse_index(self): soup = self.index_to_soup(self.INDEX) @@ -84,7 +80,7 @@ class Economist(BasicNewsRecipe): if div is not None: img = div.find('img', src=True) if img is not None: - self.cover_url = img['src'] + self.cover_url = re.sub('thumbnail','full',img['src']) feeds = OrderedDict() for section in soup.findAll(attrs={'class':lambda x: x and 'section' in x}): @@ -151,154 +147,3 @@ class Economist(BasicNewsRecipe): div.insert(2, img) table.replaceWith(div) return soup - -''' -from calibre.web.feeds.news import BasicNewsRecipe -from calibre.utils.threadpool import ThreadPool, makeRequests -from calibre.ebooks.BeautifulSoup import Tag, NavigableString -import time, string, re -from datetime import datetime -from lxml import html - -class Economist(BasicNewsRecipe): - - title = 'The Economist (RSS)' - language = 'en' - - __author__ = "Kovid Goyal" - description = ('Global news and current affairs from a European' - ' perspective. Best downloaded on Friday mornings (GMT).' - ' Much slower than the print edition based version.') - extra_css = '.headline {font-size: x-large;} \n h2 { font-size: small; } \n h1 { font-size: medium; }' - oldest_article = 7.0 - cover_url = 'http://media.economist.com/sites/default/files/imagecache/print-cover-thumbnail/print-covers/currentcoverus_large.jpg' - #cover_url = 'http://www.economist.com/images/covers/currentcoverus_large.jpg' - remove_tags = [ - dict(name=['script', 'noscript', 'title', 'iframe', 'cf_floatingcontent']), - dict(attrs={'class':['dblClkTrk', 'ec-article-info', - 'share_inline_header', 'related-items']}), - {'class': lambda x: x and 'share-links-header' in x}, - ] - keep_only_tags = [dict(id='ec-article-body')] - no_stylesheets = True - preprocess_regexps = [(re.compile('.*', re.DOTALL), - lambda x:'')] - - def parse_index(self): - from calibre.web.feeds.feedparser import parse - if self.test: - self.oldest_article = 14.0 - raw = self.index_to_soup( - 'http://feeds.feedburner.com/economist/full_print_edition', - raw=True) - entries = parse(raw).entries - pool = ThreadPool(10) - self.feed_dict = {} - requests = [] - for i, item in enumerate(entries): - title = item.get('title', _('Untitled article')) - published = item.date_parsed - if not published: - published = time.gmtime() - utctime = datetime(*published[:6]) - delta = datetime.utcnow() - utctime - if delta.days*24*3600 + delta.seconds > 24*3600*self.oldest_article: - self.log.debug('Skipping article %s as it is too old.'%title) - continue - link = item.get('link', None) - description = item.get('description', '') - author = item.get('author', '') - - requests.append([i, link, title, description, author, published]) - if self.test: - requests = requests[:4] - requests = makeRequests(self.process_eco_feed_article, requests, self.eco_article_found, - self.eco_article_failed) - for r in requests: pool.putRequest(r) - pool.wait() - - return self.eco_sort_sections([(t, a) for t, a in - self.feed_dict.items()]) - - def eco_sort_sections(self, feeds): - if not feeds: - raise ValueError('No new articles found') - order = { - 'The World This Week': 1, - 'Leaders': 2, - 'Letters': 3, - 'Briefing': 4, - 'Business': 5, - 'Finance And Economics': 6, - 'Science & Technology': 7, - 'Books & Arts': 8, - 'International': 9, - 'United States': 10, - 'Asia': 11, - 'Europe': 12, - 'The Americas': 13, - 'Middle East & Africa': 14, - 'Britain': 15, - 'Obituary': 16, - } - return sorted(feeds, cmp=lambda x,y:cmp(order.get(x[0], 100), - order.get(y[0], 100))) - - def process_eco_feed_article(self, args): - from calibre import browser - i, url, title, description, author, published = args - br = browser() - ret = br.open(url) - raw = ret.read() - url = br.geturl().split('?')[0]+'/print' - root = html.fromstring(raw) - matches = root.xpath('//*[@class = "ec-article-info"]') - feedtitle = 'Miscellaneous' - if matches: - feedtitle = string.capwords(html.tostring(matches[-1], method='text', - encoding=unicode).split('|')[-1].strip()) - return (i, feedtitle, url, title, description, author, published) - - def eco_article_found(self, req, result): - from calibre.web.feeds import Article - i, feedtitle, link, title, description, author, published = result - self.log('Found print version for article:', title, 'in', feedtitle, - 'at', link) - - a = Article(i, title, link, author, description, published, '') - - article = dict(title=a.title, description=a.text_summary, - date=time.strftime(self.timefmt, a.date), author=a.author, url=a.url) - if feedtitle not in self.feed_dict: - self.feed_dict[feedtitle] = [] - self.feed_dict[feedtitle].append(article) - - def eco_article_failed(self, req, tb): - self.log.error('Failed to download %s with error:'%req.args[0][2]) - self.log.debug(tb) - - def eco_find_image_tables(self, soup): - for x in soup.findAll('table', align=['right', 'center']): - if len(x.findAll('font')) in (1,2) and len(x.findAll('img')) == 1: - yield x - - def postprocess_html(self, soup, first): - body = soup.find('body') - for name, val in body.attrs: - del body[name] - for table in list(self.eco_find_image_tables(soup)): - caption = table.find('font') - img = table.find('img') - div = Tag(soup, 'div') - div['style'] = 'text-align:left;font-size:70%' - ns = NavigableString(self.tag_to_string(caption)) - div.insert(0, ns) - div.insert(1, Tag(soup, 'br')) - img.extract() - del img['width'] - del img['height'] - div.insert(2, img) - table.replaceWith(div) - return soup -''' - diff --git a/recipes/el_diplo.recipe b/recipes/el_diplo.recipe new file mode 100644 index 0000000000..619e99e5cd --- /dev/null +++ b/recipes/el_diplo.recipe @@ -0,0 +1,118 @@ +# Copyright 2013 Tomás Di Domenico +# +# This is a news fetching recipe for the Calibre ebook software, for +# fetching the Cono Sur edition of Le Monde Diplomatique (www.eldiplo.org). +# +# This recipe is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This software is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this recipe. If not, see . + +import re +from contextlib import closing +from calibre.web.feeds.recipes import BasicNewsRecipe +from calibre.ptempfile import PersistentTemporaryFile +from calibre.utils.magick import Image + +class ElDiplo_Recipe(BasicNewsRecipe): + title = u'El Diplo' + __author__ = 'Tomas Di Domenico' + description = 'Publicacion mensual de Le Monde Diplomatique, edicion Argentina' + langauge = 'es_AR' + needs_subscription = True + auto_cleanup = True + + def get_cover(self,url): + tmp_cover = PersistentTemporaryFile(suffix = ".jpg", prefix = "eldiplo_") + self.cover_url = tmp_cover.name + + with closing(self.browser.open(url)) as r: + imgdata = r.read() + + img = Image() + img.load(imgdata) + img.crop(img.size[0],img.size[1]/2,0,0) + + img.save(tmp_cover.name) + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + if self.username is not None and self.password is not None: + br.open('http://www.eldiplo.org/index.php/login/-/do_login/index.html') + br.select_form(nr=3) + br['uName'] = self.username + br['uPassword'] = self.password + br.submit() + self.browser = br + return br + + def parse_index(self): + default_sect = 'General' + articles = {default_sect:[]} + ans = [default_sect] + sectionsmarker = 'DOSSIER_TITLE: ' + sectionsre = re.compile('^'+sectionsmarker) + + soup = self.index_to_soup('http://www.eldiplo.org/index.php') + + coverdivs = soup.findAll(True,attrs={'id':['lmd-foto']}) + a = coverdivs[0].find('a', href=True) + coverurl = a['href'].split("?imagen=")[1] + self.get_cover(coverurl) + + thedivs = soup.findAll(True,attrs={'class':['lmd-leermas']}) + for div in thedivs: + a = div.find('a', href=True) + if 'Sumario completo' in self.tag_to_string(a, use_alt=True): + summaryurl = re.sub(r'\?.*', '', a['href']) + summaryurl = 'http://www.eldiplo.org' + summaryurl + + for pagenum in xrange(1,10): + soup = self.index_to_soup('{0}/?cms1_paging_p_b32={1}'.format(summaryurl,pagenum)) + thedivs = soup.findAll(True,attrs={'class':['interna']}) + + if len(thedivs) == 0: + break + + for div in thedivs: + section = div.find(True,text=sectionsre).replace(sectionsmarker,'') + if section == '': + section = default_sect + + if section not in articles.keys(): + articles[section] = [] + ans.append(section) + + nota = div.find(True,attrs={'class':['lmd-pl-titulo-nota-dossier']}) + a = nota.find('a', href=True) + if not a: + continue + + url = re.sub(r'\?.*', '', a['href']) + url = 'http://www.eldiplo.org' + url + title = self.tag_to_string(a, use_alt=True).strip() + + summary = div.find(True, attrs={'class':'lmd-sumario-descript'}).find('p') + if summary: + description = self.tag_to_string(summary, use_alt=False) + + aut = div.find(True, attrs={'class':'lmd-autor-sumario'}) + if aut: + auth = self.tag_to_string(aut, use_alt=False).strip() + + if not articles.has_key(section): + articles[section] = [] + + articles[section].append(dict(title=title,author=auth,url=url,date=None,description=description,content='')) + + #ans = self.sort_index_by(ans, {'The Front Page':-1, 'Dining In, Dining Out':1, 'Obituaries':2}) + ans = [(section, articles[section]) for section in ans if articles.has_key(section)] + return ans diff --git a/recipes/fleshbot.recipe b/recipes/fleshbot.recipe index 0a56e42795..0059d8855d 100644 --- a/recipes/fleshbot.recipe +++ b/recipes/fleshbot.recipe @@ -18,7 +18,7 @@ class Fleshbot(BasicNewsRecipe): encoding = 'utf-8' use_embedded_content = True language = 'en' - masthead_url = 'http://cache.gawkerassets.com/assets/kotaku.com/img/logo.png' + masthead_url = 'http://fbassets.s3.amazonaws.com/images/uploads/2012/01/fleshbot-logo.png' extra_css = ''' body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif} img{margin-bottom: 1em} @@ -31,7 +31,7 @@ class Fleshbot(BasicNewsRecipe): , 'language' : language } - feeds = [(u'Articles', u'http://feeds.gawker.com/fleshbot/vip?format=xml')] + feeds = [(u'Articles', u'http://www.fleshbot.com/feed')] remove_tags = [ {'class': 'feedflare'}, diff --git a/recipes/il_messaggero.recipe b/recipes/il_messaggero.recipe index 93c35f4695..f0983f438c 100644 --- a/recipes/il_messaggero.recipe +++ b/recipes/il_messaggero.recipe @@ -28,12 +28,15 @@ class IlMessaggero(BasicNewsRecipe): recursion = 10 remove_javascript = True + extra_css = ' .bianco31lucida{color: black} ' - - keep_only_tags = [dict(name='h1', attrs={'class':'titoloLettura2'}), - dict(name='h2', attrs={'class':'sottotitLettura'}), - dict(name='span', attrs={'class':'testoArticoloG'}) + keep_only_tags = [dict(name='h1', attrs={'class':['titoloLettura2','titoloart','bianco31lucida']}), + dict(name='h2', attrs={'class':['sottotitLettura','grigio16']}), + dict(name='span', attrs={'class':'testoArticoloG'}), + dict(name='div', attrs={'id':'testodim'}) ] + + def get_cover_url(self): cover = None st = time.localtime() @@ -55,17 +58,16 @@ class IlMessaggero(BasicNewsRecipe): feeds = [ (u'HomePage', u'http://www.ilmessaggero.it/rss/home.xml'), (u'Primo Piano', u'http://www.ilmessaggero.it/rss/initalia_primopiano.xml'), - (u'Cronaca Bianca', u'http://www.ilmessaggero.it/rss/initalia_cronacabianca.xml'), - (u'Cronaca Nera', u'http://www.ilmessaggero.it/rss/initalia_cronacanera.xml'), (u'Economia e Finanza', u'http://www.ilmessaggero.it/rss/economia.xml'), (u'Politica', u'http://www.ilmessaggero.it/rss/initalia_politica.xml'), - (u'Scienza e Tecnologia', u'http://www.ilmessaggero.it/rss/scienza.xml'), - (u'Cinema', u'http://www.ilmessaggero.it/rss.php?refresh_ce#'), - (u'Viaggi', u'http://www.ilmessaggero.it/rss.php?refresh_ce#'), + (u'Cultura', u'http://www.ilmessaggero.it/rss/cultura.xml'), + (u'Tecnologia', u'http://www.ilmessaggero.it/rss/tecnologia.xml'), + (u'Spettacoli', u'http://www.ilmessaggero.it/rss/spettacoli.xml'), + (u'Edizioni Locali', u'http://www.ilmessaggero.it/rss/edlocali.xml'), (u'Roma', u'http://www.ilmessaggero.it/rss/roma.xml'), - (u'Cultura e Tendenze', u'http://www.ilmessaggero.it/rss/roma_culturaspet.xml'), + (u'Benessere', u'http://www.ilmessaggero.it/rss/benessere.xml'), (u'Sport', u'http://www.ilmessaggero.it/rss/sport.xml'), - (u'Calcio', u'http://www.ilmessaggero.it/rss/sport_calcio.xml'), - (u'Motori', u'http://www.ilmessaggero.it/rss/sport_motori.xml') + (u'Moda', u'http://www.ilmessaggero.it/rss/moda.xml') ] + diff --git a/recipes/libero.recipe b/recipes/libero.recipe index f2208d01a3..709f3097d1 100644 --- a/recipes/libero.recipe +++ b/recipes/libero.recipe @@ -14,7 +14,8 @@ class LiberoNews(BasicNewsRecipe): __author__ = 'Marini Gabriele' description = 'Italian daily newspaper' - cover_url = 'http://www.libero-news.it/images/logo.png' + #cover_url = 'http://www.liberoquotidiano.it/images/Libero%20Quotidiano.jpg' + cover_url = 'http://www.edicola.liberoquotidiano.it/vnlibero/fpcut.jsp?testata=milano' title = u'Libero ' publisher = 'EDITORIALE LIBERO s.r.l 2006' category = 'News, politics, culture, economy, general interest' @@ -32,10 +33,11 @@ class LiberoNews(BasicNewsRecipe): remove_javascript = True keep_only_tags = [ - dict(name='div', attrs={'class':'Articolo'}) + dict(name='div', attrs={'class':'Articolo'}), + dict(name='article') ] remove_tags = [ - dict(name='div', attrs={'class':['CommentaFoto','Priva2']}), + dict(name='div', attrs={'class':['CommentaFoto','Priva2','login_commenti','box_16']}), dict(name='div', attrs={'id':['commentigenerale']}) ] feeds = [ diff --git a/recipes/new_york_review_of_books.recipe b/recipes/new_york_review_of_books.recipe index bd18b95c43..bff7421b43 100644 --- a/recipes/new_york_review_of_books.recipe +++ b/recipes/new_york_review_of_books.recipe @@ -66,21 +66,22 @@ class NewYorkReviewOfBooks(BasicNewsRecipe): self.log('Issue date:', date) # Find TOC - toc = soup.find('ul', attrs={'class':'issue-article-list'}) + tocs = soup.findAll('ul', attrs={'class':'issue-article-list'}) articles = [] - for li in toc.findAll('li'): - h3 = li.find('h3') - title = self.tag_to_string(h3) - author = self.tag_to_string(li.find('h4')) - title = title + u' (%s)'%author - url = 'http://www.nybooks.com'+h3.find('a', href=True)['href'] - desc = '' - for p in li.findAll('p'): - desc += self.tag_to_string(p) - self.log('Found article:', title) - self.log('\t', url) - self.log('\t', desc) - articles.append({'title':title, 'url':url, 'date':'', + for toc in tocs: + for li in toc.findAll('li'): + h3 = li.find('h3') + title = self.tag_to_string(h3) + author = self.tag_to_string(li.find('h4')) + title = title + u' (%s)'%author + url = 'http://www.nybooks.com'+h3.find('a', href=True)['href'] + desc = '' + for p in li.findAll('p'): + desc += self.tag_to_string(p) + self.log('Found article:', title) + self.log('\t', url) + self.log('\t', desc) + articles.append({'title':title, 'url':url, 'date':'', 'description':desc}) return [('Current Issue', articles)] diff --git a/recipes/oxford_mail.recipe b/recipes/oxford_mail.recipe new file mode 100644 index 0000000000..3096b867f4 --- /dev/null +++ b/recipes/oxford_mail.recipe @@ -0,0 +1,22 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class HindustanTimes(BasicNewsRecipe): + title = u'Oxford Mail' + language = 'en_GB' + __author__ = 'Krittika Goyal' + oldest_article = 1 #days + max_articles_per_feed = 25 + #encoding = 'cp1252' + use_embedded_content = False + + no_stylesheets = True + auto_cleanup = True + + + feeds = [ +('News', + 'http://www.oxfordmail.co.uk/news/rss/'), +('Sports', + 'http://www.oxfordmail.co.uk/sport/rss/'), +] + diff --git a/recipes/todays_zaman.recipe b/recipes/todays_zaman.recipe index 5f3b85131a..13d82e31fb 100644 --- a/recipes/todays_zaman.recipe +++ b/recipes/todays_zaman.recipe @@ -26,28 +26,33 @@ class TodaysZaman_en(BasicNewsRecipe): # remove_attributes = ['width','height'] feeds = [ - ( u'Home', u'http://www.todayszaman.com/rss?sectionId=0'), - ( u'News', u'http://www.todayszaman.com/rss?sectionId=100'), - ( u'Business', u'http://www.todayszaman.com/rss?sectionId=105'), - ( u'Interviews', u'http://www.todayszaman.com/rss?sectionId=8'), - ( u'Columnists', u'http://www.todayszaman.com/rss?sectionId=6'), - ( u'Op-Ed', u'http://www.todayszaman.com/rss?sectionId=109'), - ( u'Arts & Culture', u'http://www.todayszaman.com/rss?sectionId=110'), - ( u'Expat Zone', u'http://www.todayszaman.com/rss?sectionId=132'), - ( u'Sports', u'http://www.todayszaman.com/rss?sectionId=5'), - ( u'Features', u'http://www.todayszaman.com/rss?sectionId=116'), - ( u'Travel', u'http://www.todayszaman.com/rss?sectionId=117'), - ( u'Leisure', u'http://www.todayszaman.com/rss?sectionId=118'), - ( u'Weird But True', u'http://www.todayszaman.com/rss?sectionId=134'), - ( u'Life', u'http://www.todayszaman.com/rss?sectionId=133'), - ( u'Health', u'http://www.todayszaman.com/rss?sectionId=126'), - ( u'Press Review', u'http://www.todayszaman.com/rss?sectionId=130'), - ( u'Todays think tanks', u'http://www.todayszaman.com/rss?sectionId=159'), - - ] + ( u'Home', u'http://www.todayszaman.com/0.rss'), + ( u'Sports', u'http://www.todayszaman.com/5.rss'), + ( u'Columnists', u'http://www.todayszaman.com/6.rss'), + ( u'Interviews', u'http://www.todayszaman.com/9.rss'), + ( u'News', u'http://www.todayszaman.com/100.rss'), + ( u'National', u'http://www.todayszaman.com/101.rss'), + ( u'Diplomacy', u'http://www.todayszaman.com/102.rss'), + ( u'World', u'http://www.todayszaman.com/104.rss'), + ( u'Business', u'http://www.todayszaman.com/105.rss'), + ( u'Op-Ed', u'http://www.todayszaman.com/109.rss'), + ( u'Arts & Culture', u'http://www.todayszaman.com/110.rss'), + ( u'Features', u'http://www.todayszaman.com/116.rss'), + ( u'Travel', u'http://www.todayszaman.com/117.rss'), + ( u'Food', u'http://www.todayszaman.com/124.rss'), + ( u'Press Review', u'http://www.todayszaman.com/130.rss'), + ( u'Expat Zone', u'http://www.todayszaman.com/132.rss'), + ( u'Life', u'http://www.todayszaman.com/133.rss'), + ( u'Think Tanks', u'http://www.todayszaman.com/159.rss'), + ( u'Almanac', u'http://www.todayszaman.com/161.rss'), + ( u'Health', u'http://www.todayszaman.com/162.rss'), + ( u'Fashion & Beauty', u'http://www.todayszaman.com/163.rss'), + ( u'Science & Technology', u'http://www.todayszaman.com/349.rss'), + ] #def preprocess_html(self, soup): # return self.adeify_images(soup) #def print_version(self, url): #there is a probem caused by table format #return url.replace('http://www.todayszaman.com/newsDetail_getNewsById.action?load=detay&', 'http://www.todayszaman.com/newsDetail_openPrintPage.action?') + diff --git a/setup/iso_639/ca.po b/setup/iso_639/ca.po index fa4aebed41..8ca2f37de2 100644 --- a/setup/iso_639/ca.po +++ b/setup/iso_639/ca.po @@ -12,13 +12,13 @@ msgstr "" "Report-Msgid-Bugs-To: Debian iso-codes team \n" "POT-Creation-Date: 2011-11-25 14:01+0000\n" -"PO-Revision-Date: 2012-12-22 17:18+0000\n" +"PO-Revision-Date: 2012-12-31 12:50+0000\n" "Last-Translator: Ferran Rius \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-23 04:38+0000\n" +"X-Launchpad-Export-Date: 2013-01-01 04:45+0000\n" "X-Generator: Launchpad (build 16378)\n" "Language: ca\n" @@ -1744,7 +1744,7 @@ msgstr "Asu (Nigèria)" #. name for aun msgid "One; Molmo" -msgstr "One; Molmo" +msgstr "Oneià; Molmo" #. name for auo msgid "Auyokawa" @@ -1964,7 +1964,7 @@ msgstr "Leyigha" #. name for ayk msgid "Akuku" -msgstr "Akuku" +msgstr "Okpe-Idesa-Akuku; Akuku" #. name for ayl msgid "Arabic; Libyan" @@ -9984,7 +9984,7 @@ msgstr "Indri" #. name for ids msgid "Idesa" -msgstr "Idesa" +msgstr "Okpe-Idesa-Akuku; Idesa" #. name for idt msgid "Idaté" @@ -19524,7 +19524,7 @@ msgstr "" #. name for obi msgid "Obispeño" -msgstr "" +msgstr "Obispeño" #. name for obk msgid "Bontok; Southern" @@ -19532,7 +19532,7 @@ msgstr "Bontoc; meridional" #. name for obl msgid "Oblo" -msgstr "" +msgstr "Oblo" #. name for obm msgid "Moabite" @@ -19552,11 +19552,11 @@ msgstr "Bretó; antic" #. name for obu msgid "Obulom" -msgstr "" +msgstr "Obulom" #. name for oca msgid "Ocaina" -msgstr "" +msgstr "Ocaina" #. name for och msgid "Chinese; Old" @@ -19576,11 +19576,11 @@ msgstr "Matlazinca; Atzingo" #. name for oda msgid "Odut" -msgstr "" +msgstr "Odut" #. name for odk msgid "Od" -msgstr "" +msgstr "Od" #. name for odt msgid "Dutch; Old" @@ -19588,11 +19588,11 @@ msgstr "Holandès; antic" #. name for odu msgid "Odual" -msgstr "" +msgstr "Odual" #. name for ofo msgid "Ofo" -msgstr "" +msgstr "Ofo" #. name for ofs msgid "Frisian; Old" @@ -19604,11 +19604,11 @@ msgstr "" #. name for ogb msgid "Ogbia" -msgstr "" +msgstr "Ogbia" #. name for ogc msgid "Ogbah" -msgstr "" +msgstr "Ogbah" #. name for oge msgid "Georgian; Old" @@ -19616,7 +19616,7 @@ msgstr "" #. name for ogg msgid "Ogbogolo" -msgstr "" +msgstr "Ogbogolo" #. name for ogo msgid "Khana" @@ -19624,7 +19624,7 @@ msgstr "" #. name for ogu msgid "Ogbronuagum" -msgstr "" +msgstr "Ogbronuagum" #. name for oht msgid "Hittite; Old" @@ -19636,27 +19636,27 @@ msgstr "Hongarès; antic" #. name for oia msgid "Oirata" -msgstr "" +msgstr "Oirata" #. name for oin msgid "One; Inebu" -msgstr "" +msgstr "Oneià; Inebu" #. name for ojb msgid "Ojibwa; Northwestern" -msgstr "" +msgstr "Ojibwa; Nordoccidental" #. name for ojc msgid "Ojibwa; Central" -msgstr "" +msgstr "Ojibwa; Central" #. name for ojg msgid "Ojibwa; Eastern" -msgstr "" +msgstr "Ojibwa; Oriental" #. name for oji msgid "Ojibwa" -msgstr "" +msgstr "Ojibwa; Occidental" #. name for ojp msgid "Japanese; Old" @@ -19664,11 +19664,11 @@ msgstr "Japonès; antic" #. name for ojs msgid "Ojibwa; Severn" -msgstr "" +msgstr "Ojibwa; Severn" #. name for ojv msgid "Ontong Java" -msgstr "" +msgstr "Ontong Java" #. name for ojw msgid "Ojibwa; Western" @@ -19676,19 +19676,19 @@ msgstr "" #. name for oka msgid "Okanagan" -msgstr "" +msgstr "Colville-Okanagà" #. name for okb msgid "Okobo" -msgstr "" +msgstr "Okobo" #. name for okd msgid "Okodia" -msgstr "" +msgstr "Okodia" #. name for oke msgid "Okpe (Southwestern Edo)" -msgstr "" +msgstr "Okpe" #. name for okh msgid "Koresh-e Rostam" @@ -19696,15 +19696,15 @@ msgstr "" #. name for oki msgid "Okiek" -msgstr "" +msgstr "Okiek" #. name for okj msgid "Oko-Juwoi" -msgstr "" +msgstr "Oko-Juwoi" #. name for okk msgid "One; Kwamtim" -msgstr "" +msgstr "Oneià; Kwamtim" #. name for okl msgid "Kentish Sign Language; Old" @@ -19716,7 +19716,7 @@ msgstr "" #. name for okn msgid "Oki-No-Erabu" -msgstr "" +msgstr "Oki-No-Erabu" #. name for oko msgid "Korean; Old (3rd-9th cent.)" @@ -19728,19 +19728,19 @@ msgstr "" #. name for oks msgid "Oko-Eni-Osayen" -msgstr "" +msgstr "Oko-Eni-Osayen" #. name for oku msgid "Oku" -msgstr "" +msgstr "Oku" #. name for okv msgid "Orokaiva" -msgstr "" +msgstr "Orokaiwa" #. name for okx msgid "Okpe (Northwestern Edo)" -msgstr "" +msgstr "Okpe-Idesa-Akuku; Okpe" #. name for ola msgid "Walungge" @@ -19752,11 +19752,11 @@ msgstr "" #. name for ole msgid "Olekha" -msgstr "" +msgstr "Olekha" #. name for olm msgid "Oloma" -msgstr "" +msgstr "Oloma" #. name for olo msgid "Livvi" @@ -19768,7 +19768,7 @@ msgstr "" #. name for oma msgid "Omaha-Ponca" -msgstr "" +msgstr "Omaha-Ponca" #. name for omb msgid "Ambae; East" @@ -19780,23 +19780,23 @@ msgstr "" #. name for ome msgid "Omejes" -msgstr "" +msgstr "Omejes" #. name for omg msgid "Omagua" -msgstr "" +msgstr "Omagua" #. name for omi msgid "Omi" -msgstr "" +msgstr "Omi" #. name for omk msgid "Omok" -msgstr "" +msgstr "Omok" #. name for oml msgid "Ombo" -msgstr "" +msgstr "Ombo" #. name for omn msgid "Minoan" @@ -19816,11 +19816,11 @@ msgstr "" #. name for omt msgid "Omotik" -msgstr "" +msgstr "Omotik" #. name for omu msgid "Omurano" -msgstr "" +msgstr "Omurano" #. name for omw msgid "Tairora; South" @@ -19832,7 +19832,7 @@ msgstr "" #. name for ona msgid "Ona" -msgstr "" +msgstr "Ona" #. name for onb msgid "Lingao" @@ -19840,31 +19840,31 @@ msgstr "" #. name for one msgid "Oneida" -msgstr "" +msgstr "Oneida" #. name for ong msgid "Olo" -msgstr "" +msgstr "Olo" #. name for oni msgid "Onin" -msgstr "" +msgstr "Onin" #. name for onj msgid "Onjob" -msgstr "" +msgstr "Onjob" #. name for onk msgid "One; Kabore" -msgstr "" +msgstr "Oneià; Kabore" #. name for onn msgid "Onobasulu" -msgstr "" +msgstr "Onobasulu" #. name for ono msgid "Onondaga" -msgstr "" +msgstr "Onondaga" #. name for onp msgid "Sartang" @@ -19872,15 +19872,15 @@ msgstr "" #. name for onr msgid "One; Northern" -msgstr "" +msgstr "Oneià; Septentrional" #. name for ons msgid "Ono" -msgstr "" +msgstr "Ono" #. name for ont msgid "Ontenu" -msgstr "" +msgstr "Ontenu" #. name for onu msgid "Unua" @@ -19900,23 +19900,23 @@ msgstr "" #. name for oog msgid "Ong" -msgstr "" +msgstr "Ong" #. name for oon msgid "Önge" -msgstr "" +msgstr "Onge" #. name for oor msgid "Oorlams" -msgstr "" +msgstr "Oorlams" #. name for oos msgid "Ossetic; Old" -msgstr "" +msgstr "Osset" #. name for opa msgid "Okpamheri" -msgstr "" +msgstr "Okpamheri" #. name for opk msgid "Kopkaka" @@ -19924,39 +19924,39 @@ msgstr "" #. name for opm msgid "Oksapmin" -msgstr "" +msgstr "Oksapmin" #. name for opo msgid "Opao" -msgstr "" +msgstr "Opao" #. name for opt msgid "Opata" -msgstr "" +msgstr "Opata" #. name for opy msgid "Ofayé" -msgstr "" +msgstr "Opaie" #. name for ora msgid "Oroha" -msgstr "" +msgstr "Oroha" #. name for orc msgid "Orma" -msgstr "" +msgstr "Orma" #. name for ore msgid "Orejón" -msgstr "" +msgstr "Orejon" #. name for org msgid "Oring" -msgstr "" +msgstr "Oring" #. name for orh msgid "Oroqen" -msgstr "" +msgstr "Orotxen" #. name for ori msgid "Oriya" @@ -19968,19 +19968,19 @@ msgstr "Oromo" #. name for orn msgid "Orang Kanaq" -msgstr "" +msgstr "Orang; Kanaq" #. name for oro msgid "Orokolo" -msgstr "" +msgstr "Orocolo" #. name for orr msgid "Oruma" -msgstr "" +msgstr "Oruma" #. name for ors msgid "Orang Seletar" -msgstr "" +msgstr "Orang; Seletar" #. name for ort msgid "Oriya; Adivasi" @@ -19988,7 +19988,7 @@ msgstr "Oriya; Adivasi" #. name for oru msgid "Ormuri" -msgstr "" +msgstr "Ormuri" #. name for orv msgid "Russian; Old" @@ -19996,31 +19996,31 @@ msgstr "Rus; antic" #. name for orw msgid "Oro Win" -msgstr "" +msgstr "Oro Win" #. name for orx msgid "Oro" -msgstr "" +msgstr "Oro" #. name for orz msgid "Ormu" -msgstr "" +msgstr "Ormu" #. name for osa msgid "Osage" -msgstr "" +msgstr "Osage" #. name for osc msgid "Oscan" -msgstr "" +msgstr "Osc" #. name for osi msgid "Osing" -msgstr "" +msgstr "Osing" #. name for oso msgid "Ososo" -msgstr "" +msgstr "Ososo" #. name for osp msgid "Spanish; Old" @@ -20028,15 +20028,15 @@ msgstr "Espanyol; antic" #. name for oss msgid "Ossetian" -msgstr "" +msgstr "Osset" #. name for ost msgid "Osatu" -msgstr "" +msgstr "Osatu" #. name for osu msgid "One; Southern" -msgstr "" +msgstr "One; Meridional" #. name for osx msgid "Saxon; Old" @@ -20052,15 +20052,15 @@ msgstr "" #. name for otd msgid "Ot Danum" -msgstr "" +msgstr "Dohoi" #. name for ote msgid "Otomi; Mezquital" -msgstr "" +msgstr "Otomí; Mezquital" #. name for oti msgid "Oti" -msgstr "" +msgstr "Oti" #. name for otk msgid "Turkish; Old" @@ -20068,43 +20068,43 @@ msgstr "Turc; antic" #. name for otl msgid "Otomi; Tilapa" -msgstr "" +msgstr "Otomí; Tilapa" #. name for otm msgid "Otomi; Eastern Highland" -msgstr "" +msgstr "Otomí; Oriental" #. name for otn msgid "Otomi; Tenango" -msgstr "" +msgstr "Otomí; Tenango" #. name for otq msgid "Otomi; Querétaro" -msgstr "" +msgstr "Otomí; Queretaro" #. name for otr msgid "Otoro" -msgstr "" +msgstr "Otoro" #. name for ots msgid "Otomi; Estado de México" -msgstr "" +msgstr "Otomí; Estat de Mèxic" #. name for ott msgid "Otomi; Temoaya" -msgstr "" +msgstr "Otomí; Temoaya" #. name for otu msgid "Otuke" -msgstr "" +msgstr "Otuke" #. name for otw msgid "Ottawa" -msgstr "" +msgstr "Ottawa" #. name for otx msgid "Otomi; Texcatepec" -msgstr "" +msgstr "Otomí; Texcatepec" #. name for oty msgid "Tamil; Old" @@ -20112,7 +20112,7 @@ msgstr "" #. name for otz msgid "Otomi; Ixtenco" -msgstr "" +msgstr "Otomí; Ixtenc" #. name for oua msgid "Tagargrent" @@ -20124,7 +20124,7 @@ msgstr "" #. name for oue msgid "Oune" -msgstr "" +msgstr "Oune" #. name for oui msgid "Uighur; Old" @@ -20132,15 +20132,15 @@ msgstr "" #. name for oum msgid "Ouma" -msgstr "" +msgstr "Ouma" #. name for oun msgid "!O!ung" -msgstr "" +msgstr "Oung" #. name for owi msgid "Owiniga" -msgstr "" +msgstr "Owiniga" #. name for owl msgid "Welsh; Old" @@ -20148,11 +20148,11 @@ msgstr "Gal·lès; antic" #. name for oyb msgid "Oy" -msgstr "" +msgstr "Oy" #. name for oyd msgid "Oyda" -msgstr "" +msgstr "Oyda" #. name for oym msgid "Wayampi" @@ -20160,7 +20160,7 @@ msgstr "" #. name for oyy msgid "Oya'oya" -msgstr "" +msgstr "Oya'oya" #. name for ozm msgid "Koonzime" @@ -20168,27 +20168,27 @@ msgstr "" #. name for pab msgid "Parecís" -msgstr "" +msgstr "Pareci" #. name for pac msgid "Pacoh" -msgstr "" +msgstr "Pacoh" #. name for pad msgid "Paumarí" -msgstr "" +msgstr "Paumarí" #. name for pae msgid "Pagibete" -msgstr "" +msgstr "Pagibete" #. name for paf msgid "Paranawát" -msgstr "" +msgstr "Paranawat" #. name for pag msgid "Pangasinan" -msgstr "" +msgstr "Pangasi" #. name for pah msgid "Tenharim" @@ -20196,19 +20196,19 @@ msgstr "" #. name for pai msgid "Pe" -msgstr "" +msgstr "Pe" #. name for pak msgid "Parakanã" -msgstr "" +msgstr "Akwawa; Parakanà" #. name for pal msgid "Pahlavi" -msgstr "" +msgstr "Pahlavi" #. name for pam msgid "Pampanga" -msgstr "" +msgstr "Pampangà" #. name for pan msgid "Panjabi" @@ -20220,63 +20220,63 @@ msgstr "" #. name for pap msgid "Papiamento" -msgstr "" +msgstr "Papiament" #. name for paq msgid "Parya" -msgstr "" +msgstr "Parya" #. name for par msgid "Panamint" -msgstr "" +msgstr "Panamint" #. name for pas msgid "Papasena" -msgstr "" +msgstr "Papasena" #. name for pat msgid "Papitalai" -msgstr "" +msgstr "Papitalai" #. name for pau msgid "Palauan" -msgstr "" +msgstr "Palavà" #. name for pav msgid "Pakaásnovos" -msgstr "" +msgstr "Pakaa Nova" #. name for paw msgid "Pawnee" -msgstr "" +msgstr "Pawnee" #. name for pax msgid "Pankararé" -msgstr "" +msgstr "Pankararé" #. name for pay msgid "Pech" -msgstr "" +msgstr "Pech" #. name for paz msgid "Pankararú" -msgstr "" +msgstr "Pankarurú" #. name for pbb msgid "Páez" -msgstr "" +msgstr "Páez" #. name for pbc msgid "Patamona" -msgstr "" +msgstr "Patamona" #. name for pbe msgid "Popoloca; Mezontla" -msgstr "" +msgstr "Popoloca; Mezontla" #. name for pbf msgid "Popoloca; Coyotepec" -msgstr "" +msgstr "Popoloca; Coyotepec" #. name for pbg msgid "Paraujano" @@ -20288,7 +20288,7 @@ msgstr "" #. name for pbi msgid "Parkwa" -msgstr "" +msgstr "Parkwa" #. name for pbl msgid "Mak (Nigeria)" @@ -20300,7 +20300,7 @@ msgstr "" #. name for pbo msgid "Papel" -msgstr "" +msgstr "Papel" #. name for pbp msgid "Badyara" @@ -20336,7 +20336,7 @@ msgstr "" #. name for pca msgid "Popoloca; Santa Inés Ahuatempan" -msgstr "" +msgstr "Popoloca; Ahuatempan" #. name for pcb msgid "Pear" @@ -20832,7 +20832,7 @@ msgstr "Senufo; Palaka" #. name for pls msgid "Popoloca; San Marcos Tlalcoyalco" -msgstr "" +msgstr "Popoloca; Tlalcoyalc" #. name for plt msgid "Malagasy; Plateau" @@ -21040,7 +21040,7 @@ msgstr "" #. name for poe msgid "Popoloca; San Juan Atzingo" -msgstr "" +msgstr "Popoloca; Atzingo" #. name for pof msgid "Poke" @@ -21104,7 +21104,7 @@ msgstr "" #. name for pow msgid "Popoloca; San Felipe Otlaltepec" -msgstr "" +msgstr "Popoloca; Otlaltepec" #. name for pox msgid "Polabian" @@ -21160,7 +21160,7 @@ msgstr "" #. name for pps msgid "Popoloca; San Luís Temalacayuca" -msgstr "" +msgstr "Popoloca; Temalacayuca" #. name for ppt msgid "Pare" diff --git a/setup/iso_639/es.po b/setup/iso_639/es.po index 7b1126a18b..93582e18ab 100644 --- a/setup/iso_639/es.po +++ b/setup/iso_639/es.po @@ -9,13 +9,13 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-11-25 14:01+0000\n" -"PO-Revision-Date: 2012-12-24 08:05+0000\n" -"Last-Translator: Adolfo Jayme Barrientos \n" +"PO-Revision-Date: 2012-12-28 09:13+0000\n" +"Last-Translator: Jellby \n" "Language-Team: Español; Castellano <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-25 04:46+0000\n" +"X-Launchpad-Export-Date: 2012-12-29 05:00+0000\n" "X-Generator: Launchpad (build 16378)\n" #. name for aaa @@ -9584,7 +9584,7 @@ msgstr "Holikachuk" #. name for hoj msgid "Hadothi" -msgstr "Hadothi" +msgstr "Hadoti" #. name for hol msgid "Holu" @@ -11796,7 +11796,7 @@ msgstr "" #. name for khq msgid "Songhay; Koyra Chiini" -msgstr "" +msgstr "Songhay koyra chiini" #. name for khr msgid "Kharia" diff --git a/setup/translations.py b/setup/translations.py index 3942953179..e0a512d21c 100644 --- a/setup/translations.py +++ b/setup/translations.py @@ -227,9 +227,22 @@ class GetTranslations(Translations): # {{{ ans.append(line.split()[-1]) return ans + def resolve_conflicts(self): + conflict = False + for line in subprocess.check_output(['bzr', 'status']).splitlines(): + if line == 'conflicts:': + conflict = True + break + if not conflict: + raise Exception('bzr merge failed and no conflicts found') + subprocess.check_call(['bzr', 'resolve', '--take-other']) + def run(self, opts): if not self.modified_translations: - subprocess.check_call(['bzr', 'merge', self.BRANCH]) + try: + subprocess.check_call(['bzr', 'merge', self.BRANCH]) + except subprocess.CalledProcessError: + self.resolve_conflicts() self.check_for_errors() if self.modified_translations: diff --git a/src/calibre/constants.py b/src/calibre/constants.py index ba56e1fc9e..60e4006ac6 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -4,7 +4,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = u'calibre' -numeric_version = (0, 9, 12) +numeric_version = (0, 9, 13) __version__ = u'.'.join(map(unicode, numeric_version)) __author__ = u"Kovid Goyal " diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index cc42cf33b2..f6220976a9 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -191,7 +191,7 @@ class ANDROID(USBMS): 0x10a9 : { 0x6050 : [0x227] }, # Prestigio - 0x2207 : { 0 : [0x222] }, + 0x2207 : { 0 : [0x222], 0x10 : [0x222] }, } EBOOK_DIR_MAIN = ['eBooks/import', 'wordplayer/calibretransfer', 'Books', diff --git a/src/calibre/devices/mtp/unix/libmtp.c b/src/calibre/devices/mtp/unix/libmtp.c index 920ddde3d1..5a274b2e89 100644 --- a/src/calibre/devices/mtp/unix/libmtp.c +++ b/src/calibre/devices/mtp/unix/libmtp.c @@ -734,6 +734,7 @@ initlibmtp(void) { // who designs a library without anyway to control/redirect the debugging // output, and hardcoded paths that cannot be changed? int bak, new; + fprintf(stdout, "\n"); // This is needed, without it, for some odd reason the code below causes stdout to buffer all output after it is restored, rather than using line buffering, and setlinebuf does not work. fflush(stdout); bak = dup(STDOUT_FILENO); new = open("/dev/null", O_WRONLY); diff --git a/src/calibre/ebooks/conversion/plugins/pdf_output.py b/src/calibre/ebooks/conversion/plugins/pdf_output.py index c2b0050dd7..e4eb45fc6a 100644 --- a/src/calibre/ebooks/conversion/plugins/pdf_output.py +++ b/src/calibre/ebooks/conversion/plugins/pdf_output.py @@ -8,11 +8,11 @@ __docformat__ = 'restructuredtext en' Convert OEB ebook format to PDF. ''' -import glob -import os +import glob, os -from calibre.customize.conversion import OutputFormatPlugin, \ - OptionRecommendation +from calibre.constants import iswindows +from calibre.customize.conversion import (OutputFormatPlugin, + OptionRecommendation) from calibre.ptempfile import TemporaryDirectory UNITS = ['millimeter', 'centimeter', 'point', 'inch' , 'pica' , 'didot', @@ -136,8 +136,8 @@ class PDFOutput(OutputFormatPlugin): ''' from calibre.ebooks.oeb.base import urlnormalize from calibre.gui2 import must_use_qt - from calibre.utils.fonts.utils import get_font_names, remove_embed_restriction - from PyQt4.Qt import QFontDatabase, QByteArray + from calibre.utils.fonts.utils import remove_embed_restriction + from PyQt4.Qt import QFontDatabase, QByteArray, QRawFont, QFont # First find all @font-face rules and remove them, adding the embedded # fonts to Qt @@ -166,11 +166,13 @@ class PDFOutput(OutputFormatPlugin): except: continue must_use_qt() - QFontDatabase.addApplicationFontFromData(QByteArray(raw)) - try: - family_name = get_font_names(raw)[0] - except: - family_name = None + fid = QFontDatabase.addApplicationFontFromData(QByteArray(raw)) + family_name = None + if fid > -1: + try: + family_name = unicode(QFontDatabase.applicationFontFamilies(fid)[0]) + except (IndexError, KeyError): + pass if family_name: family_map[icu_lower(font_family)] = family_name @@ -179,6 +181,7 @@ class PDFOutput(OutputFormatPlugin): # Now map the font family name specified in the css to the actual # family name of the embedded font (they may be different in general). + font_warnings = set() for item in self.oeb.manifest: if not hasattr(item.data, 'cssRules'): continue for i, rule in enumerate(item.data.cssRules): @@ -187,9 +190,28 @@ class PDFOutput(OutputFormatPlugin): if ff is None: continue val = ff.propertyValue for i in xrange(val.length): - k = icu_lower(val[i].value) + try: + k = icu_lower(val[i].value) + except (AttributeError, TypeError): + val[i].value = k = 'times' if k in family_map: val[i].value = family_map[k] + if iswindows: + # On windows, Qt uses GDI which does not support OpenType + # (CFF) fonts, so we need to nuke references to OpenType + # fonts. Note that you could compile QT with configure + # -directwrite, but that requires atleast Vista SP2 + for i in xrange(val.length): + family = val[i].value + if family: + f = QRawFont.fromFont(QFont(family)) + if len(f.fontTable('head')) == 0: + if family not in font_warnings: + self.log.warn('Ignoring unsupported font: %s' + %family) + font_warnings.add(family) + # Either a bitmap or (more likely) a CFF font + val[i].value = 'times' def convert_text(self, oeb_book): from calibre.ebooks.metadata.opf2 import OPF diff --git a/src/calibre/ebooks/lrf/__init__.py b/src/calibre/ebooks/lrf/__init__.py index 725338ead8..d99d914ed0 100644 --- a/src/calibre/ebooks/lrf/__init__.py +++ b/src/calibre/ebooks/lrf/__init__.py @@ -41,7 +41,6 @@ def find_custom_fonts(options, logger): if options.serif_family: f = family(options.serif_family) fonts['serif'] = font_scanner.legacy_fonts_for_family(f) - print (111111, fonts['serif']) if not fonts['serif']: logger.warn('Unable to find serif family %s'%f) if options.sans_family: diff --git a/src/calibre/ebooks/pdf/render/engine.py b/src/calibre/ebooks/pdf/render/engine.py index b65aed0660..149d75d1f0 100644 --- a/src/calibre/ebooks/pdf/render/engine.py +++ b/src/calibre/ebooks/pdf/render/engine.py @@ -19,7 +19,7 @@ from calibre.constants import plugins from calibre.ebooks.pdf.render.serialize import (PDFStream, Path) from calibre.ebooks.pdf.render.common import inch, A4, fmtnum from calibre.ebooks.pdf.render.graphics import convert_path, Graphics -from calibre.utils.fonts.sfnt.container import Sfnt +from calibre.utils.fonts.sfnt.container import Sfnt, UnsupportedFont from calibre.utils.fonts.sfnt.metrics import FontMetrics Point = namedtuple('Point', 'x y') @@ -224,7 +224,11 @@ class PdfEngine(QPaintEngine): def create_sfnt(self, text_item): get_table = partial(self.qt_hack.get_sfnt_table, text_item) - ans = Font(Sfnt(get_table)) + try: + ans = Font(Sfnt(get_table)) + except UnsupportedFont as e: + raise UnsupportedFont('The font %s is not a valid sfnt. Error: %s'%( + text_item.font().family(), e)) glyph_map = self.qt_hack.get_glyph_map(text_item) gm = {} for uc, glyph_id in enumerate(glyph_map): @@ -251,18 +255,14 @@ class PdfEngine(QPaintEngine): except (KeyError, ValueError): pass glyphs = [] - pdf_pos = point - first_baseline = None + last_x = last_y = 0 for i, pos in enumerate(gi.positions): - if first_baseline is None: - first_baseline = pos.y() - glyph_pos = pos - delta = glyph_pos - pdf_pos - glyphs.append((delta.x(), pos.y()-first_baseline, gi.indices[i])) - pdf_pos = glyph_pos + x, y = pos.x(), pos.y() + glyphs.append((x-last_x, last_y - y, gi.indices[i])) + last_x, last_y = x, y - self.pdf.draw_glyph_run([1, 0, 0, -1, point.x(), - point.y()], gi.size, metrics, glyphs) + self.pdf.draw_glyph_run([gi.stretch, 0, 0, -1, 0, 0], gi.size, metrics, + glyphs) sip.delete(gi) @store_error diff --git a/src/calibre/ebooks/pdf/render/from_html.py b/src/calibre/ebooks/pdf/render/from_html.py index 47aa295743..edf5db1882 100644 --- a/src/calibre/ebooks/pdf/render/from_html.py +++ b/src/calibre/ebooks/pdf/render/from_html.py @@ -176,6 +176,7 @@ class PDFWriter(QObject): p = QPixmap() p.loadFromData(self.cover_data) if not p.isNull(): + self.doc.init_page() draw_image_page(QRect(0, 0, self.doc.width(), self.doc.height()), self.painter, p, preserve_aspect_ratio=self.opts.preserve_cover_aspect_ratio) diff --git a/src/calibre/ebooks/pdf/render/gradients.py b/src/calibre/ebooks/pdf/render/gradients.py new file mode 100644 index 0000000000..b614ca128e --- /dev/null +++ b/src/calibre/ebooks/pdf/render/gradients.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:fdm=marker:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2013, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from future_builtins import map + +from PyQt4.Qt import (QPointF) + +from calibre.ebooks.pdf.render.common import Stream + +def generate_linear_gradient_shader(gradient, page_rect, is_transparent=False): + pass + +class LinearGradient(Stream): + + def __init__(self, brush, matrix, pixel_page_width, pixel_page_height): + is_opaque = brush.isOpaque() + gradient = brush.gradient() + inv = matrix.inverted()[0] + + page_rect = tuple(map(inv.map, ( + QPointF(0, 0), QPointF(pixel_page_width, 0), QPointF(0, pixel_page_height), + QPointF(pixel_page_width, pixel_page_height)))) + + shader = generate_linear_gradient_shader(gradient, page_rect) + alpha_shader = None + if not is_opaque: + alpha_shader = generate_linear_gradient_shader(gradient, page_rect, True) + + shader, alpha_shader + + diff --git a/src/calibre/ebooks/pdf/render/links.py b/src/calibre/ebooks/pdf/render/links.py index 41b7fcfd39..188dbd4494 100644 --- a/src/calibre/ebooks/pdf/render/links.py +++ b/src/calibre/ebooks/pdf/render/links.py @@ -58,7 +58,13 @@ class Links(object): 0])}) if is_local: path = combined_path if href else path - annot['Dest'] = self.anchors[path][frag] + try: + annot['Dest'] = self.anchors[path][frag] + except KeyError: + try: + annot['Dest'] = self.anchors[path][None] + except KeyError: + pass else: url = href + (('#'+frag) if frag else '') purl = urlparse(url) diff --git a/src/calibre/ebooks/pdf/render/qt_hack.cpp b/src/calibre/ebooks/pdf/render/qt_hack.cpp index f68f40c921..1a9a33c35f 100644 --- a/src/calibre/ebooks/pdf/render/qt_hack.cpp +++ b/src/calibre/ebooks/pdf/render/qt_hack.cpp @@ -17,18 +17,25 @@ GlyphInfo* get_glyphs(QPointF &p, const QTextItem &text_item) { QFontEngine *fe = ti.fontEngine; qreal size = ti.fontEngine->fontDef.pixelSize; #ifdef Q_WS_WIN - if (ti.fontEngine->type() == QFontEngine::Win) { + if (false && ti.fontEngine->type() == QFontEngine::Win) { + // This is used in the Qt sourcecode, but it gives incorrect results, + // so I have disabled it. I dont understand how it works in qpdf.cpp QFontEngineWin *fe = static_cast(ti.fontEngine); + // I think this should be tmHeight - tmInternalLeading, but pixelSize + // seems to work on windows as well, so leave it as pixelSize size = fe->tm.tmHeight; } #endif + int synthesized = ti.fontEngine->synthesized(); + qreal stretch = synthesized & QFontEngine::SynthesizedStretch ? ti.fontEngine->fontDef.stretch/100. : 1.; + QVarLengthArray glyphs; QVarLengthArray positions; QTransform m = QTransform::fromTranslate(p.x(), p.y()); fe->getGlyphPositions(ti.glyphs, m, ti.flags, glyphs, positions); QVector points = QVector(positions.count()); for (int i = 0; i < positions.count(); i++) { - points[i].setX(positions[i].x.toReal()); + points[i].setX(positions[i].x.toReal()/stretch); points[i].setY(positions[i].y.toReal()); } @@ -38,10 +45,10 @@ GlyphInfo* get_glyphs(QPointF &p, const QTextItem &text_item) { const quint32 *tag = reinterpret_cast("name"); - return new GlyphInfo(fe->getSfntTable(qToBigEndian(*tag)), size, points, indices); + return new GlyphInfo(fe->getSfntTable(qToBigEndian(*tag)), size, stretch, points, indices); } -GlyphInfo::GlyphInfo(const QByteArray& name, qreal size, const QVector &positions, const QVector &indices) :name(name), positions(positions), size(size), indices(indices) { +GlyphInfo::GlyphInfo(const QByteArray& name, qreal size, qreal stretch, const QVector &positions, const QVector &indices) :name(name), positions(positions), size(size), stretch(stretch), indices(indices) { } QByteArray get_sfnt_table(const QTextItem &text_item, const char* tag_name) { diff --git a/src/calibre/ebooks/pdf/render/qt_hack.h b/src/calibre/ebooks/pdf/render/qt_hack.h index d1cb5e208d..1bae8f2624 100644 --- a/src/calibre/ebooks/pdf/render/qt_hack.h +++ b/src/calibre/ebooks/pdf/render/qt_hack.h @@ -17,9 +17,10 @@ class GlyphInfo { QByteArray name; QVector positions; qreal size; + qreal stretch; QVector indices; - GlyphInfo(const QByteArray &name, qreal size, const QVector &positions, const QVector &indices); + GlyphInfo(const QByteArray &name, qreal size, qreal stretch, const QVector &positions, const QVector &indices); private: GlyphInfo(const GlyphInfo&); diff --git a/src/calibre/ebooks/pdf/render/qt_hack.sip b/src/calibre/ebooks/pdf/render/qt_hack.sip index b5a6fcf55e..54d8726f4d 100644 --- a/src/calibre/ebooks/pdf/render/qt_hack.sip +++ b/src/calibre/ebooks/pdf/render/qt_hack.sip @@ -13,9 +13,10 @@ class GlyphInfo { public: QByteArray name; qreal size; + qreal stretch; QVector &positions; QVector indices; - GlyphInfo(const QByteArray &name, qreal size, const QVector &positions, const QVector &indices); + GlyphInfo(const QByteArray &name, qreal size, qreal stretch, const QVector &positions, const QVector &indices); private: GlyphInfo(const GlyphInfo& g); diff --git a/src/calibre/ebooks/pdf/render/test.py b/src/calibre/ebooks/pdf/render/test.py index d57678a057..866c15f83f 100644 --- a/src/calibre/ebooks/pdf/render/test.py +++ b/src/calibre/ebooks/pdf/render/test.py @@ -8,7 +8,6 @@ __copyright__ = '2012, Kovid Goyal ' __docformat__ = 'restructuredtext en' import os -from tempfile import gettempdir from PyQt4.Qt import (QBrush, QColor, QPoint, QPixmap, QPainterPath, QRectF, QApplication, QPainter, Qt, QImage, QLinearGradient, @@ -99,12 +98,17 @@ def pen(p, xmax, ymax): p.drawRect(0, xmax/3, xmax/3, xmax/2) def text(p, xmax, ymax): - p.drawText(QPoint(0, ymax/3), 'Text') + f = p.font() + f.setPixelSize(24) + f.setFamily('Candara') + p.setFont(f) + p.drawText(QPoint(0, 100), + 'Test intra glyph spacing ffagain imceo') def main(): app = QApplication([]) app - tdir = gettempdir() + tdir = os.path.abspath('.') pdf = os.path.join(tdir, 'painter.pdf') func = full dpi = 100 diff --git a/src/calibre/gui2/actions/choose_library.py b/src/calibre/gui2/actions/choose_library.py index 3e8d6154b3..d830970057 100644 --- a/src/calibre/gui2/actions/choose_library.py +++ b/src/calibre/gui2/actions/choose_library.py @@ -169,6 +169,10 @@ class ChooseLibraryAction(InterfaceAction): self.choose_menu = self.qaction.menu() + ac = self.create_action(spec=(_('Pick a random book'), 'random.png', + None, None), attr='action_pick_random') + ac.triggered.connect(self.pick_random) + if not os.environ.get('CALIBRE_OVERRIDE_DATABASE_PATH', None): self.choose_menu.addAction(self.action_choose) @@ -176,13 +180,11 @@ class ChooseLibraryAction(InterfaceAction): self.quick_menu_action = self.choose_menu.addMenu(self.quick_menu) self.rename_menu = QMenu(_('Rename library')) self.rename_menu_action = self.choose_menu.addMenu(self.rename_menu) + self.choose_menu.addAction(ac) self.delete_menu = QMenu(_('Remove library')) self.delete_menu_action = self.choose_menu.addMenu(self.delete_menu) - - ac = self.create_action(spec=(_('Pick a random book'), 'random.png', - None, None), attr='action_pick_random') - ac.triggered.connect(self.pick_random) - self.choose_menu.addAction(ac) + else: + self.choose_menu.addAction(ac) self.rename_separator = self.choose_menu.addSeparator() diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index 2b817b663a..3a958c4cfa 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -8,10 +8,10 @@ from functools import partial from PyQt4.Qt import QThread, QObject, Qt, QProgressDialog, pyqtSignal, QTimer from calibre.gui2.dialogs.progress import ProgressDialog -from calibre.gui2 import (question_dialog, error_dialog, info_dialog, gprefs, +from calibre.gui2 import (error_dialog, info_dialog, gprefs, warning_dialog, available_width) from calibre.ebooks.metadata.opf2 import OPF -from calibre.ebooks.metadata import MetaInformation, authors_to_string +from calibre.ebooks.metadata import MetaInformation from calibre.constants import preferred_encoding, filesystem_encoding, DEBUG from calibre.utils.config import prefs from calibre import prints, force_unicode, as_unicode @@ -391,25 +391,10 @@ class Adder(QObject): # {{{ if not duplicates: return self.duplicates_processed() self.pd.hide() - duplicate_message = [] - for x in duplicates: - duplicate_message.append(_('Already in calibre:')) - matching_books = self.db.books_with_same_title(x[0]) - for book_id in matching_books: - aut = [a.replace('|', ',') for a in (self.db.authors(book_id, - index_is_id=True) or '').split(',')] - duplicate_message.append('\t'+ _('%(title)s by %(author)s')% - dict(title=self.db.title(book_id, index_is_id=True), - author=authors_to_string(aut))) - duplicate_message.append(_('You are trying to add:')) - duplicate_message.append('\t'+_('%(title)s by %(author)s')% - dict(title=x[0].title, - author=x[0].format_field('authors')[1])) - duplicate_message.append('') - if question_dialog(self._parent, _('Duplicates found!'), - _('Books with the same title as the following already ' - 'exist in calibre. Add them anyway?'), - '\n'.join(duplicate_message)): + from calibre.gui2.dialogs.duplicates import DuplicatesQuestion + d = DuplicatesQuestion(self.db, duplicates, self._parent) + duplicates = tuple(d.duplicates) + if duplicates: pd = QProgressDialog(_('Adding duplicates...'), '', 0, len(duplicates), self._parent) pd.setCancelButton(None) diff --git a/src/calibre/gui2/dialogs/duplicates.py b/src/calibre/gui2/dialogs/duplicates.py new file mode 100644 index 0000000000..eb1787c0c5 --- /dev/null +++ b/src/calibre/gui2/dialogs/duplicates.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:fdm=marker:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2013, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from PyQt4.Qt import (QDialog, QGridLayout, QIcon, QLabel, QTreeWidget, + QTreeWidgetItem, Qt, QFont, QDialogButtonBox) + +from calibre.ebooks.metadata import authors_to_string + +class DuplicatesQuestion(QDialog): + + def __init__(self, db, duplicates, parent=None): + QDialog.__init__(self, parent) + self.l = l = QGridLayout() + self.setLayout(l) + self.setWindowTitle(_('Duplicates found!')) + self.i = i = QIcon(I('dialog_question.png')) + self.setWindowIcon(i) + + self.l1 = l1 = QLabel() + self.l2 = l2 = QLabel(_( + 'Books with the same titles as the following already ' + 'exist in calibre. Select which books you want added anyway.')) + l2.setWordWrap(True) + l1.setPixmap(i.pixmap(128, 128)) + l.addWidget(l1, 0, 0) + l.addWidget(l2, 0, 1) + + self.dup_list = dl = QTreeWidget(self) + l.addWidget(dl, 1, 0, 1, 2) + dl.setHeaderHidden(True) + dl.addTopLevelItems(list(self.process_duplicates(db, duplicates))) + dl.expandAll() + dl.setIndentation(30) + + self.bb = bb = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) + bb.accepted.connect(self.accept) + bb.rejected.connect(self.reject) + l.addWidget(bb, 2, 0, 1, 2) + self.ab = ab = bb.addButton(_('Select &all'), bb.ActionRole) + ab.clicked.connect(self.select_all) + self.nb = ab = bb.addButton(_('Select &none'), bb.ActionRole) + ab.clicked.connect(self.select_none) + + self.resize(self.sizeHint()) + self.exec_() + + def select_all(self): + for i in xrange(self.dup_list.topLevelItemCount()): + x = self.dup_list.topLevelItem(i) + x.setCheckState(0, Qt.Checked) + + def select_none(self): + for i in xrange(self.dup_list.topLevelItemCount()): + x = self.dup_list.topLevelItem(i) + x.setCheckState(0, Qt.Unchecked) + + def reject(self): + self.select_none() + QDialog.reject(self) + + def process_duplicates(self, db, duplicates): + ta = _('%(title)s by %(author)s') + bf = QFont(self.dup_list.font()) + bf.setBold(True) + itf = QFont(self.dup_list.font()) + itf.setItalic(True) + + for mi, cover, formats in duplicates: + item = QTreeWidgetItem([ta%dict( + title=mi.title, author=mi.format_field('authors')[1])] , 0) + item.setCheckState(0, Qt.Checked) + item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsUserCheckable) + item.setData(0, Qt.FontRole, bf) + item.setData(0, Qt.UserRole, (mi, cover, formats)) + matching_books = db.books_with_same_title(mi) + + def add_child(text): + c = QTreeWidgetItem([text], 1) + c.setFlags(Qt.ItemIsEnabled) + item.addChild(c) + return c + + add_child(_('Already in calibre:')).setData(0, Qt.FontRole, itf) + + for book_id in matching_books: + aut = [a.replace('|', ',') for a in (db.authors(book_id, + index_is_id=True) or '').split(',')] + add_child(ta%dict( + title=db.title(book_id, index_is_id=True), + author=authors_to_string(aut))) + add_child('') + + yield item + + @property + def duplicates(self): + for i in xrange(self.dup_list.topLevelItemCount()): + x = self.dup_list.topLevelItem(i) + if x.checkState(0) == Qt.Checked: + yield x.data(0, Qt.UserRole).toPyObject() + +if __name__ == '__main__': + from PyQt4.Qt import QApplication + from calibre.ebooks.metadata.book.base import Metadata as M + from calibre.library import db + + app = QApplication([]) + db = db() + d = DuplicatesQuestion(db, [(M('Life of Pi', ['Yann Martel']), None, None), + (M('Heirs of the blade', ['Adrian Tchaikovsky']), None, None)]) + print (tuple(d.duplicates)) + diff --git a/src/calibre/gui2/duplicates.py b/src/calibre/gui2/duplicates.py deleted file mode 100644 index 6e45b0e9e6..0000000000 --- a/src/calibre/gui2/duplicates.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import (unicode_literals, division, absolute_import, - print_function) - -__license__ = 'GPL v3' -__copyright__ = '2011, Kovid Goyal ' -__docformat__ = 'restructuredtext en' - - diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 0162258764..507305528d 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -1106,6 +1106,7 @@ class SortKeyGenerator(object): self.library_order = tweaks['title_series_sorting'] == 'library_order' self.data = data self.string_sort_key = sort_key + self.lang_idx = field_metadata['languages']['rec_index'] def __call__(self, record): values = tuple(self.itervals(self.data[record])) @@ -1159,7 +1160,12 @@ class SortKeyGenerator(object): val = ('', 1) else: if self.library_order: - val = title_sort(val) + try: + lang = record[self.lang_idx].partition(u',')[0] + except (AttributeError, ValueError, KeyError, + IndexError, TypeError): + lang = None + val = title_sort(val, order='library_order', lang=lang) sidx_fm = self.field_metadata[name + '_index'] sidx = record[sidx_fm['rec_index']] val = (self.string_sort_key(val), sidx) diff --git a/src/calibre/library/catalogs/epub_mobi_builder.py b/src/calibre/library/catalogs/epub_mobi_builder.py index 65ed89da5c..8f27db61be 100644 --- a/src/calibre/library/catalogs/epub_mobi_builder.py +++ b/src/calibre/library/catalogs/epub_mobi_builder.py @@ -663,9 +663,9 @@ class CatalogBuilder(object): # Hack to force the cataloged leading letter to be # an unadorned character if the accented version sorts before the unaccented exceptions = { - u'Ä': u'A', - u'Ö': u'O', - u'Ü': u'U' + u'Ä': u'A', + u'Ö': u'O', + u'Ü': u'U' } if key is not None: @@ -3473,7 +3473,7 @@ class CatalogBuilder(object): self.play_order += 1 navLabelTag = Tag(ncx_soup, 'navLabel') textTag = Tag(ncx_soup, 'text') - if len(authors_by_letter[1]) > 1: + if authors_by_letter[1] == self.SYMBOLS: fmt_string = _(u"Authors beginning with %s") else: fmt_string = _(u"Authors beginning with '%s'") @@ -4422,12 +4422,12 @@ class CatalogBuilder(object): Generate a legal XHTML anchor from unicode character. Args: - c (unicode): character + c (unicode): character(s) Return: - (str): legal XHTML anchor string of unicode charactar name + (str): legal XHTML anchor string of unicode character name """ - fullname = unicodedata.name(unicode(c)) + fullname = u''.join(unicodedata.name(unicode(cc)) for cc in c) terms = fullname.split() return "_".join(terms) diff --git a/src/calibre/library/server/browse.py b/src/calibre/library/server/browse.py index a7789e5035..576f8801da 100644 --- a/src/calibre/library/server/browse.py +++ b/src/calibre/library/server/browse.py @@ -441,7 +441,11 @@ class BrowseServer(object): cat_len = len(category) if not (len(ucat) > cat_len and ucat.startswith(category+'.')): continue - icon = category_icon_map['user:'] + + if ucat in self.icon_map: + icon = '_'+quote(self.icon_map[ucat]) + else: + icon = category_icon_map['user:'] # we have a subcategory. Find any further dots (further subcats) cat_len += 1 cat = ucat[cat_len:] diff --git a/src/calibre/translations/af.po b/src/calibre/translations/af.po index fdb8a349bf..4bfba3cf48 100644 --- a/src/calibre/translations/af.po +++ b/src/calibre/translations/af.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-21 05:12+0000\n" +"POT-Creation-Date: 2012-12-28 04:12+0000\n" "PO-Revision-Date: 2012-08-14 16:03+0000\n" "Last-Translator: Albé Theunissen \n" "Language-Team: Afrikaans \n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2012-12-22 04:36+0000\n" +"X-Launchpad-Export-Date: 2012-12-29 04:39+0000\n" "X-Generator: Launchpad (build 16378)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 @@ -28,8 +28,8 @@ msgstr "Doen absolute niks" #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:376 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:377 -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:100 -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:101 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:115 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:667 @@ -53,6 +53,8 @@ msgstr "Doen absolute niks" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/rtf_input.py:289 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/rtf_input.py:291 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:140 @@ -131,11 +133,9 @@ msgstr "Doen absolute niks" #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:108 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:447 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:455 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:411 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:414 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 @@ -147,20 +147,20 @@ msgstr "Doen absolute niks" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1416 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:55 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:825 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:440 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1106 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1319 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1322 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1325 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1328 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1416 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1413 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:261 @@ -1248,8 +1248,8 @@ msgstr "Voeg boeke toe tot toestel se metadatalys…" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:352 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:354 -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:115 -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:129 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:140 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:440 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:472 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:615 @@ -1393,27 +1393,31 @@ msgstr "" msgid "Communicate with the Hanvon N520 eBook reader." msgstr "Kommunikeer met die Hanvon N520 eBoek-leser." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:47 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:48 +msgid "Communicate with the Kibano eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:61 msgid "Communicate with The Book reader." msgstr "Kommunikeer met The Book-leser." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:59 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:73 msgid "Communicate with the Libre Air reader." msgstr "Kommunikeer met die Libre Air-leser." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:72 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:86 msgid "Communicate with the SpringDesign Alex eBook reader." msgstr "Kommunikeer met die SpringDesign Alex eBoek-leser" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:132 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:146 msgid "Communicate with the Azbooka" msgstr "Kommunikeer met die Azbooka" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:151 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:165 msgid "Communicate with the Elonex EB 511 eBook reader." msgstr "Kommunikeer met die Elonex EB 511 eBoek-leser." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:171 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:185 msgid "Communicate with the Cybook Odyssey eBook reader." msgstr "Kommunikeer met die Cybook Odyssey eBoek-leser." @@ -1647,7 +1651,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:646 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:404 msgid "Not Implemented" msgstr "Nie geïmplementeer nie" @@ -2200,35 +2204,35 @@ msgstr "Kommunikeer met die Samsung SNE eBoek-leser." msgid "Communicate with the Teclast K3/K5 reader." msgstr "Kommunikeer met die Teclast K3/K5-leser." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:37 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:38 msgid "Communicate with the Newsmy reader." msgstr "Kommunikeer met die Newsmy-leser." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:49 msgid "Communicate with the Archos reader." msgstr "Kommunikeer met die Archos-leser." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:58 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:59 msgid "Communicate with the Pico reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:70 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:71 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:81 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:82 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:91 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:92 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:103 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:114 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:115 msgid "Communicate with the Wexler reader." msgstr "" @@ -2427,6 +2431,7 @@ msgid "There is insufficient free space on the storage card" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:210 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/render/from_html.py:229 #, python-format msgid "Rendered %s" msgstr "" @@ -2964,55 +2969,57 @@ msgstr "" msgid "Use the new PDF conversion engine." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:71 -#, python-format +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:52 msgid "" -"The unit of measure. Default is inch. Choices are %s Note: This does not " -"override the unit for margins!" +"Normally, the PDF page size is set by the output profile chosen under page " +"options. This option will cause the page size settings under PDF Output to " +"override the size specified by the output profile." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:76 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:58 +#, python-format +msgid "" +"The unit of measure for page sizes. Default is inch. Choices are %s Note: " +"This does not override the unit for margins!" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:63 #, python-format msgid "" "The size of the paper. This size will be overridden when a non default " "output profile is used. Default is letter. Choices are %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:80 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:67 msgid "" "Custom size of the document. Use the form widthxheight EG. `123x321` to " "specify the width and height. This overrides any specified paper-size." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:85 -#, python-format -msgid "The orientation of the page. Default is portrait. Choices are %s" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:89 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:72 msgid "" "Preserve the aspect ratio of the cover, instead of stretching it to fill the " "full first page of the generated pdf." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:94 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:77 msgid "The font family used to render serif fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:97 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:80 msgid "The font family used to render sans-serif fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:100 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:83 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:87 msgid "The font family used to render monospaced fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:90 msgid "The default font size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:110 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:93 msgid "The default font size for monospaced text" msgstr "" @@ -4041,8 +4048,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:222 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1111 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1108 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:39 @@ -4054,14 +4061,14 @@ msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:770 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1109 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:771 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:159 msgid "Publisher" msgstr "" @@ -4094,13 +4101,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:161 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:982 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1228 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:201 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:780 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:792 msgid "Tags" msgstr "" @@ -4109,7 +4116,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:224 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:307 @@ -4121,7 +4128,7 @@ msgstr[0] "" msgstr[1] "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:778 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:94 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:164 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:127 msgid "Languages" @@ -4133,7 +4140,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:782 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:88 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" @@ -4253,48 +4260,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +msgid "Brazil" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:753 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:775 msgid "Amazon timed out. Try again later." msgstr "" @@ -4485,11 +4496,11 @@ msgid "HTML TOC generation options." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:160 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:176 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:778 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:790 msgid "Rating" msgstr "" @@ -4808,7 +4819,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:228 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:256 @@ -4838,32 +4849,32 @@ msgstr "" msgid "Select book files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:189 msgid "Adding" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:190 msgid "Creating book records from ISBNs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:270 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:330 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:301 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:304 msgid "Select books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:342 msgid "Merged some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:343 #, python-format msgid "" "The following %d duplicate books were found and incoming book formats were " @@ -4871,21 +4882,21 @@ msgid "" "settings:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:365 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:366 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:376 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:381 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:411 msgid "Add to library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:392 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:106 @@ -4896,32 +4907,32 @@ msgstr "" msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:405 msgid "" "The following books are virtual and cannot be added to the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:411 msgid "No book files found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:417 msgid "Downloading books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:418 msgid "Downloading books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:437 msgid "Could not download files from the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:440 msgid "Could not download some files from the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:433 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:444 msgid "Could not download files" msgstr "" @@ -5038,6 +5049,7 @@ msgid "No existing calibre library found at %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:160 msgid "Choose Library" msgstr "" @@ -5208,7 +5220,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:423 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:975 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1007 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:114 @@ -5236,7 +5248,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:534 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:539 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:278 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:1016 msgid "Not allowed" @@ -5286,7 +5298,7 @@ msgstr "" msgid "Empty output file, probably the conversion process crashed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:401 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 #: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 @@ -5294,57 +5306,83 @@ msgstr "" msgid "%(title)s by %(author)s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:59 +msgid "Choose library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:138 +msgid "Library &path:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:146 +msgid "Browse for library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:149 +msgid "&Delete after copy" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:172 msgid "Copy to library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:173 msgid "Copy selected books to the specified library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:206 msgid "(delete after copy)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:210 +msgid "Choose library by path..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:227 msgid "Cannot copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:221 +msgid "Cannot copy to current library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:232 msgid "No library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:233 #, python-format msgid "No library found at %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:239 msgid "Copying" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:250 msgid "Could not copy books: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:254 #, python-format msgid "Copied %(num)d books to %(loc)s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:258 msgid "Auto merged" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:259 msgid "" "Some books were automatically merged into existing records in the target " "library. Click Show details to see which ones. This behavior is controlled " "by the Auto merge option in Preferences->Adding books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:279 msgid "" "You cannot use other libraries while using the environment variable " "CALIBRE_OVERRIDE_DATABASE_PATH." @@ -5949,7 +5987,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:785 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:797 msgid "Show book details" msgstr "" @@ -6491,9 +6529,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:277 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:286 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 @@ -6554,7 +6592,7 @@ msgid "Click to open" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:180 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:834 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:846 msgid "Ids" msgstr "" @@ -6564,7 +6602,7 @@ msgid "Book %(sidx)s of %(series)s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:233 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1115 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 msgid "Collections" msgstr "" @@ -6675,7 +6713,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:47 #: /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:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 @@ -6833,7 +6871,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:258 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:260 msgid "Name" msgstr "" @@ -8046,48 +8084,59 @@ msgstr "" msgid "PDF Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:115 +msgid "" +"Note: The paper size settings below only take effect if you enable " +"the \"Override\" checkbox below. Otherwise the size from the output profile " +"will be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:116 +msgid "&Override paper size set in output profile" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:117 msgid "&Paper Size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:102 -msgid "&Orientation:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:118 msgid "&Custom size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:119 +msgid "&Unit:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:120 msgid "Preserve &aspect ratio of cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:374 msgid "Se&rif family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:375 msgid "&Sans family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:376 msgid "&Monospace family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:381 msgid "S&tandard font:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:125 msgid "Default font si&ze:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:378 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:380 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:395 @@ -8097,18 +8146,11 @@ msgstr "" msgid " px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:127 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:379 msgid "Monospace &font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:113 -msgid "" -"Note: The paper size settings below only take effect if you have set " -"the output profile to the default output profile. Otherwise the output " -"profile will override these settings." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/pml_output.py:14 msgid "PMLZ Output" msgstr "" @@ -9245,6 +9287,14 @@ msgstr "" msgid "Reset author to Unknown" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:48 +msgid "Set the series of the new books to:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:60 +msgid "Reset series" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn.py:72 msgid "Some invalid ISBNs" msgstr "" @@ -9706,8 +9756,8 @@ msgid "Location" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1113 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1110 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:365 @@ -10896,7 +10946,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/store_dialog_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:652 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:282 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:284 msgid "Search" msgstr "" @@ -11234,7 +11284,7 @@ msgid "never delete" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:279 msgid " days" msgstr "" @@ -11819,7 +11869,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:271 msgid "Switch to Advanced mode" msgstr "" @@ -11893,39 +11943,39 @@ msgid "" "Add/Update recipe button. Continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263 msgid "Add custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:264 msgid "Available user recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265 msgid "Add/Update &recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:266 msgid "&Remove recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 msgid "&Share recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:268 msgid "S&how recipe files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 msgid "Customize &builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 msgid "&Load recipe from file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 msgid "" "\n" "

Alap szintű " -"hírösszeállítás létrehozása hírforrások hozzáadásával.
Legtöbb esetben " -"a „Haladó mód”-ot is használnia kell a letöltés " -"testreszabásához.

" +"right:0px; -qt-block-indent:0; text-indent:0px;\">Alapszintű hírösszeállítás " +"létrehozása hírcsatornák hozzáadásával.
Legtöbb esetben a „Haladó mód”-" +"ot is használnia kell a letöltés testreszabásához.

" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:276 msgid "Recipe &title:" msgstr "A hírösszeállí&tás címe:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:277 msgid "&Oldest article:" msgstr "Leg&régebbi cikk:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:278 msgid "The oldest article to download" msgstr "A legrégebbi letöltendő cikk" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:280 msgid "&Max. number of articles per feed:" -msgstr "A hírforrásban szereplő cikkek &maximális száma:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:275 -msgid "Maximum number of articles to download per feed." -msgstr "A hírforrásban letöltendő cikkek maximális száma:" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:276 -msgid "Feeds in recipe" -msgstr "Hírforrások a hírösszeállításban" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:278 -msgid "Remove feed from recipe" -msgstr "Hírforrás eltávolítása a hírösszeállításból" +msgstr "A hírcsatorna cikkeinek &maximális száma:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:281 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:284 -msgid "Add feed to recipe" -msgstr "Hírforrás hozzáadása a hírösszeállításhoz" +msgid "Maximum number of articles to download per feed." +msgstr "A hírcsatornából letöltendő cikkek maximális száma:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:282 +msgid "Feeds in recipe" +msgstr "Hírcsatornák a hírösszeállításban" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:284 +msgid "Remove feed from recipe" +msgstr "Hírcsatorna eltávolítása a hírösszeállításból" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:290 +msgid "Add feed to recipe" +msgstr "Hírcsatorna hozzáadása a hírösszeállításhoz" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:288 msgid "&Feed title:" -msgstr "&Hírforrás címe:" +msgstr "&Hírcsatorna címe:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:289 msgid "Feed &URL:" -msgstr "Hírforrás URL-je:" +msgstr "Hírcsatorna URL-je:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:291 msgid "&Add feed" -msgstr "Hírforrás hozzácadása" +msgstr "&Hírcsatorna hozzácadása" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:292 msgid "" "For help with writing advanced news recipes, please visit User Recipes" @@ -13219,7 +13299,7 @@ msgstr "" "ebook.com/news.html\">Felhasználói Hírösszeállítások oldalon kaphat " "további információkat." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:293 msgid "Recipe source code (python)" msgstr "Hírösszeállítás forráskódja (python)" @@ -13263,7 +13343,7 @@ msgstr "Az e-book letöltése nem sikerült" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:125 #, python-format msgid "Email %(name)s to %(to)s" -msgstr "%(name)s elküldése e-mailben ide: %(to)s" +msgstr "%(name)s elküldése emailben ide: %(to)s" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:144 msgid "News:" @@ -13294,24 +13374,24 @@ msgstr "%s formátumban." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:225 msgid "Sending email to" -msgstr "E-mail küldése ide:" +msgstr "Email küldése ide:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:256 msgid "Auto convert the following books before sending via email?" msgstr "" -"Az e-mailben történő küldés előtt kívánja automatikusan konvertálni a " -"kijelölt könyveket?" +"Az eailben történő küldés előtt kívánja automatikusan konvertálni a kijelölt " +"könyveket?" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:263 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" -"Nem lehet elküldeni e-mailben a következő könyveket, mert nem léteznek a " +"Nem lehet elküldeni emailben a következő könyveket, mert nem léteznek a " "megadott formátumokban:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:269 msgid "Failed to email book" -msgstr "A könyv e-mailben történő elküldése meghiúsult" +msgstr "A könyv emailben történő elküldése meghiúsult" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:272 msgid "sent" @@ -13426,7 +13506,7 @@ msgstr "Reguláris kifejezés (?P)" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:123 msgid "Choose a font family" -msgstr "" +msgstr "Betűtípus kiválasztása" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:136 #, python-format @@ -13439,7 +13519,7 @@ msgstr "Betűtípus kiválasztása" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:195 msgid "Add &fonts" -msgstr "" +msgstr "&Hozzáadás" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:199 msgid "Choose a font family from the list below:" @@ -13447,11 +13527,11 @@ msgstr "Válasszon betűtípust az alábbi listából:" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:205 msgid "Find Next" -msgstr "" +msgstr "Következő találat" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:208 msgid "Find Previous" -msgstr "" +msgstr "Előző találat" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:258 #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:377 @@ -13470,15 +13550,15 @@ msgstr "Nincs" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:264 msgid "Select font files" -msgstr "" +msgstr "Betűfájlok kiválasztása" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:264 msgid "TrueType/OpenType Fonts" -msgstr "" +msgstr "TrueType/OpenType betűtípusok" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:274 msgid "Corrupt font" -msgstr "" +msgstr "Hibás betűkészlet" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:275 #, python-format @@ -13487,12 +13567,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:294 msgid "Added fonts" -msgstr "" +msgstr "Hozzáadott betűtípusok" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:295 #, python-format msgid "Added font families: %s" -msgstr "" +msgstr "Hozzáadott betűtípusok: %s" #: /home/kovid/work/calibre/src/calibre/gui2/font_family_chooser.py:320 msgid "Choose &font family" @@ -13794,32 +13874,32 @@ msgstr "csillag" msgid "Y" msgstr "Y" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:84 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:285 msgid "On Device" msgstr "Eszközön" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:86 msgid "Size (MB)" msgstr "Méret (MB)" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:93 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:275 msgid "Modified" msgstr "Módosítva" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:822 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1454 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:819 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1451 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:335 msgid "The lookup/search name is \"{0}\"" msgstr "Keresési/rendezési feltétel: „{0}”" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:828 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1456 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:825 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1453 msgid "This book's UUID is \"{0}\"" msgstr "A könyv UUID-je: „{0}”" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:915 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:912 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:324 @@ -13827,7 +13907,7 @@ msgstr "A könyv UUID-je: „{0}”" msgid "Permission denied" msgstr "Hozzáférés megtagadva" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:913 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:455 @@ -13837,32 +13917,32 @@ msgid "" msgstr "" "A könyv helyét nem sikerült megváltoztatni. Esetleg más program is használja?" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:920 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:917 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:923 msgid "Failed to set data" msgstr "Sikertelen adatbeállítás" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:921 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:927 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:918 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:924 msgid "Could not set data, click Show Details to see why." msgstr "" "Nem sikerült az adatokat beállítani, további információkért kattintson a " "Részletek megjelenítésére." -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1110 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1107 msgid "In Library" msgstr "Könyvtárban" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1114 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1111 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "Méret" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1436 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1433 msgid "Marked for deletion" msgstr "Megjelölve törlése" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1439 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1436 msgid "Double click to edit me

" msgstr "Dupla-kattintás a szerkesztéshez

" @@ -14015,7 +14095,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:75 msgid "Path too long" -msgstr "" +msgstr "Elérési út túl hosszú" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:76 #, python-format @@ -14468,7 +14548,7 @@ msgstr "%s feldolgozva" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:124 msgid "Downloaded metadata fields" -msgstr "Letöltendő metaadat mezők" +msgstr "Letöltött metaadat mezők" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" @@ -14547,7 +14627,7 @@ msgstr "Sorozatok törlése" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 msgid "Clear all tags" -msgstr "" +msgstr "Minden címke törlése" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:201 msgid "Clear Ids" @@ -14899,6 +14979,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:159 msgid "Automatically &convert added books to the current output format" msgstr "" +"A hozzáadott &könyvek automatikus konvertálása a jelenlegi kimeneti " +"formátumba" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:160 msgid "The Add &Process" @@ -15065,11 +15147,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:165 msgid "Preferred &input format order:" -msgstr "&Bemeneti formátumok előnyberészesítési sorrendje:" +msgstr "&Bemeneti formátumok előnyben részesítési sorrendje:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:168 msgid "Use internal &viewer for:" -msgstr "A beépített ol&vasó program használata a következőkhöz:" +msgstr "A beépített ol&vasóprogram használata a következőkhöz:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:169 msgid "Reset all disabled &confirmation dialogs" @@ -15077,7 +15159,7 @@ msgstr "&Minden letiltott megerősítő párbeszédablak engedélyezése" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:26 msgid "All Columns" -msgstr "" +msgstr "Minden oszlop" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:37 @@ -15221,28 +15303,28 @@ msgstr "" "Egy feltételt úgy kapcsolhat ki, hogy a hozzá tartozó értékeket üresre " "állítja" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:339 msgid "Sample Text" msgstr "Mintaszöveg" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:381 msgid "Invalid condition" msgstr "Érvénytelen feltétel" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:382 #, python-format msgid "One of the conditions for this rule is invalid: %s" msgstr "A következő szabály egyik feltétele nem megfelelő: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:387 msgid "No conditions" msgstr "Nincs feltétel megadva" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:388 msgid "You must specify at least one non-empty condition for this rule" msgstr "Legalább egy, nem üres feltételt meg kell adnia a szabályhoz" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:476 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:479 #, python-format msgid "" "\n" @@ -15255,7 +15337,7 @@ msgstr "" "
%(rule)s
\n" " " -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:481 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:484 #, python-format msgid "" "

Set the color of %(col)s to %(color)s if the " @@ -15270,7 +15352,7 @@ msgstr "" "

    %(rule)s
\n" " " -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:500 #, python-format msgid "" "
  • If the %(col)s column %(action)s value: %(val)s" @@ -15278,7 +15360,7 @@ msgstr "" "
  • Ha a(z) %(col)s oszlop %(action)s értékű(kel/re..): " "%(val)s" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:516 msgid "" "You can control the color of columns in the book list by creating \"rules\" " "that tell calibre what color to use. Click the Add Rule button below to get " @@ -15288,36 +15370,36 @@ msgstr "" "kattintson a „Szabály hozzáadása” gombra.

    A szabályra történő dupla " "kattintással módosíthatja a már meglévőt." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:524 msgid "Add Rule" msgstr "Sz&abály hozzáadása" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:527 msgid "Remove Rule" msgstr "Szabály &eltávolítása" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:544 msgid "Move the selected rule up" msgstr "A kiválasztott szabály mozgatása felfelé" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:549 msgid "Move the selected rule down" msgstr "A kiválasztott szabály mozgatása lefelé" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:557 msgid "Add Advanced Rule" msgstr "Össze&tett szabály hozzáadása" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:601 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:605 msgid "No rule selected" msgstr "Nincs kiválasztott szabály" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:606 #, python-format msgid "No rule selected for %s." msgstr "Nincs kiválasztott szabály a következőhöz: %s." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:611 msgid "removal" msgstr "eltávolítás" @@ -15804,6 +15886,9 @@ msgid "" "A device (%s) is already detected by calibre. If you wish to debug the " "detection of another device, first disconnect this device." msgstr "" +"Egy (%s) eszközt már felismert a calibre. Ha szeretné egy másik eszköz " +"kapcsolódását ellenőrizni, ezt a felismert eszközt először le kell " +"választania." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/device_debug.py:57 msgid "Debugging failed" @@ -15860,17 +15945,17 @@ msgid "" "automatically sent for downloaded news to all email addresses that have Auto-" "send checked." msgstr "" -"A calibre könyveket tud továbbítani Önnek e-mailen keresztül. Ha bejelöli az " -"Automatikus küldést, akkor az e-mailek a letöltött hírekkel együtt " +"A calibre könyveket tud továbbítani Önnek emaiben. Ha bejelöli az " +"Automatikus küldést, akkor az emailek a letöltött hírekkel együtt " "postázódnak az összes címre." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:67 msgid "Add an email address to which to send books" -msgstr "E-mail cím hozzáadása könyvküldéshez" +msgstr "Email cím hozzáadása könyvküldéshez" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:68 msgid "&Add email" -msgstr "E-mail &hozzáadása" +msgstr "Email &hozzáadása" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:69 msgid "Make &default" @@ -15878,11 +15963,11 @@ msgstr "Legyen &alapértelmezett" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:70 msgid "&Remove email" -msgstr "E-mail &eltávolítása" +msgstr "Email &eltávolítása" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:28 msgid "Email" -msgstr "E-mail" +msgstr "Email" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:28 msgid "Subject" @@ -15890,7 +15975,7 @@ msgstr "Tárgy" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:29 msgid "Alias" -msgstr "" +msgstr "Álnév" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:29 msgid "Auto send" @@ -15899,7 +15984,7 @@ msgstr "Auto küld" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:34 msgid "Formats to email. The first matching format will be sent." msgstr "" -"E-mailben elküldendő formátum. Az első létező formátum kerül elküldésre." +"Emailben elküldendő formátum. Az első létező formátum kerül elküldésre." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:35 msgid "" @@ -15907,7 +15992,7 @@ msgid "" "used for the subject. Also, the same templates used for \"Save to disk\" " "such as {title} and {author_sort} can be used here." msgstr "" -"Az e-mail tárgya. Ha üres, akkor a cím lesz a tárgy. A „Mentés lemezre” " +"Az email tárgya. Ha üres, akkor a cím lesz a tárgy. A „Mentés lemezre” " "sablonjait, mint a {title} vagy az {author_sort} is használhatja." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:39 @@ -15916,8 +16001,8 @@ msgid "" "address (provided it is in one of the listed formats)." msgstr "" "Ha be van jelölve, akkor a letöltött hírek automatikusan
    el lesznek " -"küldve e-mailben erre a címre (ha létezik a „Formátumok” oszlopban " -"beírtaknak megfelelő)" +"küldve emailben erre a címre (ha létezik a „Formátumok” oszlopban beírtaknak " +"megfelelő)" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:42 msgid "Friendly name to use for this email address" @@ -15925,7 +16010,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:128 msgid "new email address" -msgstr "új e-mail cím" +msgstr "új email cím" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/ignored_devices.py:24 msgid "" @@ -16087,7 +16172,7 @@ msgstr "Mozgatás lefelé" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:267 msgid "Default author link template:" -msgstr "Alapértelmezett szerzőhivatkozás minta:" +msgstr "Alapértelmezett szerzőhivatkozás sablon:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:268 msgid "" @@ -16100,15 +16185,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:273 msgid "Show &cover in the book details panel" -msgstr "" +msgstr "&Borító megjelenítése a könyv részletei panelen" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:274 msgid "Show the size of the book's cover in pixels" -msgstr "" +msgstr "A borítókép méretét mutatja meg képpontban" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:275 msgid "Show cover &size" -msgstr "" +msgstr "Borítóméret &mutatása" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:277 msgid "" @@ -16154,7 +16239,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:292 msgid "Categories not to partition:" -msgstr "" +msgstr "Csoportosítás nélküli kategóriák:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:293 msgid "" @@ -16194,7 +16279,7 @@ msgstr "Ha a borítóböngésző külön ablakban van, az legyen &teljes képern #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:305 #, python-format msgid "You can press the %s keys to toggle full screen mode." -msgstr "A következő billentyűkkel válthat teljes képernyős üzemmódra: %s" +msgstr "A következő billentyűkkel válthat teljesképernyős üzemmódra: %s" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:231 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:123 @@ -16435,7 +16520,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:77 msgid "Debug &device detection" -msgstr "Eszközkapcsolódás ellenőrzése" +msgstr "Eszközkapcsolódás &ellenőrzése" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:78 msgid "Get information to setup the &user defined device" @@ -16665,7 +16750,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:368 #, python-format msgid "Are you sure you want to remove the plugin: %s?" -msgstr "" +msgstr "Biztosan törli a következő bővítményt: %s?" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:373 msgid "Plugin {0} successfully removed" @@ -16740,7 +16825,7 @@ msgid "" "particular book does not have some metadata, the variable will be replaced " "by the empty string." msgstr "" -"A lenti mintát pontosítva be tudja állítani a lemezre történő mentés mappa " +"A lenti sablont pontosítva be tudja állítani a lemezre történő mentés mappa " "és fájlneveit. A „/” karakter jeleni az almappákat. A használható metaadat-" "változókat a listamezőben láthatja. Ha az adott könyv nem tartalmazza a " "megadott metaadatot, akkor az egy üres karakterlánccal lesz helyettesítve." @@ -16893,7 +16978,7 @@ msgstr "A keresés elkezdődik, ahogy beírja a szöveget" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:169 msgid "Unaccented characters match accented characters" -msgstr "" +msgstr "Ékezetes karakterek megfeleltetése ékezet nélkülivel" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:170 msgid "" @@ -17444,10 +17529,6 @@ msgstr "Váltás az eszköz és a könyvtár nézet között" msgid "Separator" msgstr "Elválasztó" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:59 -msgid "Choose library" -msgstr "Könyvtár kiválasztása" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:220 msgid "The main toolbar" msgstr "A fő eszköztár" @@ -18008,7 +18089,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:178 msgid "You must enter a title, author or keyword to search for." -msgstr "" +msgstr "Meg kell adnia egy címet, szerzőt vagy kulcsszót a kereséshez." #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:300 msgid "Customize get books search" @@ -18032,19 +18113,19 @@ msgstr "Könyv letöltése" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:171 msgid "Search by title" -msgstr "" +msgstr "Keresés cím alapjáán" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:173 msgid "Search by author" -msgstr "" +msgstr "Keresés szerző alapján" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:175 msgid "&Keyword:" -msgstr "" +msgstr "&Kulcsszó:" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:176 msgid "Search by any keyword" -msgstr "" +msgstr "Keresés bármilyen kulcsszó alapján" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:182 msgid "Open a selected book in the system's web browser" @@ -18315,7 +18396,7 @@ msgid "Alter Tag Browser" msgstr "Címkeböngésző megváltoztatása" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:397 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:277 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:279 msgid "Sort by" msgstr "Rendezés" @@ -18447,11 +18528,11 @@ msgstr "A(z) %s kezelése" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:566 msgid "Change category icon" -msgstr "" +msgstr "Kategória ikon megváltoztatása" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:568 msgid "Restore default icon" -msgstr "" +msgstr "Alapértelmezett ikon visszaállítása" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:586 msgid "Show all categories" @@ -18545,7 +18626,7 @@ msgstr "Az aktuális keresés törlése" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:368 msgid "Debug mode" -msgstr "Hibakövetési mód" +msgstr "Hibakeresési mód" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:369 #, python-format @@ -18640,7 +18721,7 @@ msgid "" msgstr "" " kommunikál az eszközzel!
    \n" " A kilépés adatvesztést okozhat az eszközön.
    \n" -" Biztos, hogy ki akarsz lépni??" +" Biztos, hogy ki akar lépni??" #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:745 msgid "Active jobs" @@ -18834,11 +18915,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config.py:63 msgid "Start viewer in full screen mode" -msgstr "" +msgstr "Olvasóprogram indítása teljesképernyős módban" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config.py:65 msgid "Show full screen usage help" -msgstr "" +msgstr "Teljesképernyő súgó mutatása" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config.py:74 msgid "Font options" @@ -18913,7 +18994,7 @@ msgstr "E-book olvasó beállítása" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:377 msgid "&Default font size:" -msgstr "&Alap betűméret:" +msgstr "Alapértelmezett &betűméret:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:382 msgid "Serif" @@ -18988,7 +19069,7 @@ msgstr "Teljesképernyős módban a szöveg maximális szélessége:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:404 msgid "Show &clock in full screen mode" -msgstr "&Óra megjelenítése teljes képernyős módban" +msgstr "&Óra megjelenítése teljesképernyős módban" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:405 msgid "Show reading &position in full screen mode" @@ -18996,19 +19077,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:406 msgid "Show &scrollbar in full screen mode" -msgstr "" +msgstr "Gördítősáv mutatása teljesképernyős módban" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:407 msgid "&Start viewer in full screen mode" -msgstr "" +msgstr "Olvasóprogram &indítása teljesképernyős módban" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:408 msgid "Show &help message when starting full screen mode" -msgstr "" +msgstr "&Súgóüzenet megjelenítése teljesképernyős üzemmódban" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:409 msgid "F&ull screen options" -msgstr "&Teljes képernyős beállítások" +msgstr "&Teljesképernyős beállítások" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:410 msgid "Background color:" @@ -19126,7 +19207,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:442 msgid "Delete a saved theme:" -msgstr "" +msgstr "Mentett téma törlése:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:444 msgid "&Theming" @@ -19142,11 +19223,11 @@ msgstr "Keresés szótárban" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "View &image..." -msgstr "" +msgstr "Kép megtek&intése..." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:509 msgid "View &table..." -msgstr "" +msgstr "&Táblázat megtekintése..." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:512 msgid "&Search for next occurrence" @@ -19182,8 +19263,8 @@ msgid "Section End" msgstr "Szakasz vége" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:547 -msgid "Normal font size" -msgstr "" +msgid "Default font size" +msgstr "Alpértelmezett betűméret" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:614 #, python-format @@ -19206,7 +19287,7 @@ msgstr "&Mentés másként" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/image_popup.py:41 msgid "&Rotate" -msgstr "" +msgstr "Fo&rgatás" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/image_popup.py:67 msgid "Choose a file to save to" @@ -19303,7 +19384,7 @@ msgstr "Szöveg keresése a könyvben" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:246 #, python-format msgid "Toggle full screen (%s)" -msgstr "Teljesképernyős mód be/ki (%s)" +msgstr "Teljesképernyős be/ki (%s)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:286 msgid "Full screen mode" @@ -19357,19 +19438,19 @@ msgstr "E-bookok" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "" -"Make font size %(which)s\n" +"%(which)s font size\n" "Current magnification: %(mag).1f" msgstr "" -"Betűméret változtatása %(which)s\n" -"Jelenlegi nagyítás mértéke: %(mag).1f" +"%(which)s betű méret\n" +"Jelenlegi nagyítás: %(mag).1f" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:702 -msgid "larger" -msgstr "nagyobbra" +msgid "Increase" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:704 -msgid "smaller" -msgstr "kisebbre" +msgid "Decrease" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:722 #, python-format @@ -19412,7 +19493,7 @@ msgstr "Nem lehet megnyitni a könyvet" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:988 msgid "Unknown error" -msgstr "" +msgstr "Ismeretlen hiba" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1103 msgid "Options to control the ebook viewer" @@ -19429,7 +19510,7 @@ msgstr "" msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -"Ha be van állítva, akkor az olvasóprogram megpróbál teljes képernyősként " +"Ha be van állítva, akkor az olvasóprogram megpróbál teljesképernyősként " "indulni" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:1118 @@ -19498,7 +19579,7 @@ msgstr "Könyvjelző" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:224 msgid "Toggle full screen" -msgstr "Teljes képernyő be/ki" +msgstr "Teljesképernyő be/ki" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:225 msgid "Print" @@ -19518,11 +19599,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:230 msgid "Load theme" -msgstr "" +msgstr "Téma betöltése" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:231 msgid "Load a theme" -msgstr "" +msgstr "Téma betöltése" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/printing.py:68 msgid "Failed to render" @@ -19535,7 +19616,7 @@ msgstr "Nem sikerült a következő dokumentum renderelése: %s" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/table_popup.py:57 msgid "View Table" -msgstr "" +msgstr "Táblázat" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/table_popup.py:72 msgid "No table found" @@ -19709,15 +19790,15 @@ msgid "" "button below. You will also have to register your gmail address in your " "Amazon account." msgstr "" -"

    A calibre e-mailben automatikusan tud könyveket küldeni Kindle " -"olvasójára. Ehhez alul be kell állítania az e-mail küldést. A legegyszerűbb, " -"ha létrehoz egy ingyenes gmail fiókot és a " -"„Gmail használata” gombra kattint. Ezt a Gmail címet természetesen az Ön " -"Amazon fiókjában is regisztrálni kell." +"

    A calibre emailben automatikusan tud könyveket küldeni Kindle olvasójára. " +"Ehhez alul be kell állítania az email küldést. A legegyszerűbb, ha létrehoz " +"egy ingyenes gmail fiókot és a „Gmail " +"használata” gombra kattint. Ezt a Gmail címet természetesen az Ön Amazon " +"fiókjában is regisztrálni kell." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:50 msgid "&Kindle email:" -msgstr "&Kindle e-mail:" +msgstr "&Kindle email:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:57 msgid "Choose your &language:" @@ -19757,25 +19838,25 @@ msgstr "A levél elküldése sikerült." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:59 msgid "Setup sending email using" -msgstr "Küldésre szolgáló e-mail beállítása a következővel:" +msgstr "Küldésre szolgáló email beállítása a következővel:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:61 msgid "" "If you don't have an account, you can sign up for a free {name} email " "account at http://{url}. {extra}" msgstr "" -"Ha még nincs fiókja, regisztrálhat egy ingyenes {name} e-mail címet a http://{url} oldalon. {extra}" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:68 #, python-format msgid "Your %s &email address:" -msgstr "Az Ön %s &e-mail címe:" +msgstr "Az Ön %s &email címe:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:69 #, python-format msgid "Your %s &username:" -msgstr "%s &felhasználóneve:" +msgstr "Az Ön %s &felhasználóneve:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:70 #, python-format @@ -19789,9 +19870,9 @@ msgid "" "your %s email address to the allowed email addresses in your Amazon.com " "Kindle management page." msgstr "" -"Ha tervezi, hogy Kindle eszközére e-mailen keresztül küld könyveket, akkor " -"a(z) %s e-mail címét hozzá kell adnia az Amazon.com-ra bejelentkezés után a " -"„Your Account > Manage Your Kindle > Personal Document Settings > Approved " +"Ha tervezi, hogy Kindle eszközére emailben küld könyveket, akkor a(z) %s e-" +"mail címét hozzá kell adnia az Amazon.com-ra bejelentkezés után a „Your " +"Account > Manage Your Kindle > Personal Document Settings > Approved " "Personal Document E-mail List” résznél az „Add a new approved e-mail " "address”-re kattintva." @@ -19806,7 +19887,7 @@ msgstr "Helytelen felhasználói név" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:103 #, python-format msgid "%s needs the full email address as your username" -msgstr "%s esetén a teljes e-mail cím használandó felhasználónévként" +msgstr "%s esetén a teljes email cím használandó felhasználónévként" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:154 msgid "OK to proceed?" @@ -19816,7 +19897,7 @@ msgstr "Kívánja folytatni?" msgid "" "This will display your email password on the screen. Is it OK to proceed?" msgstr "" -"Ennek hatására megjelenik az e-mail címéhez tartozó jelszó a képernyőn. " +"Ennek hatására megjelenik az email címéhez tartozó jelszó a képernyőn. " "Kívánja folytatni?" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:199 @@ -19826,7 +19907,7 @@ msgid "" "this case, I strongly suggest you setup a free gmail account instead." msgstr "" "Ha új Hotmail fiókot hoz létre, a Microsoft időnként felszólíthatja a " -"felhasználói fiók érvényesítésére mielőtt engedi, hogy a calibre e-mailt " +"felhasználói fiók érvényesítésére mielőtt engedi, hogy a calibre emailt " "küldjön. Javasoljuk, hogy ebben az esetben használjon GMail fiókot." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:221 @@ -19862,13 +19943,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 msgid "Send email &from:" -msgstr "&E-mail küldése a következőről:" +msgstr "&Email küldése a következőről:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 msgid "" "

    This is what will be present in the From: field of emails sent by " "calibre.
    Set it to your email address" -msgstr "Ez fog megjelenni a Feladó mezőben.
    Írja be az e-mail címét." +msgstr "Ez fog megjelenni a Feladó mezőben.
    Írja be az email címét." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 msgid "" @@ -19885,7 +19966,7 @@ msgstr "&Levelező kiszolgáló" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "calibre can optionally use a server to send mail" msgstr "" -"A calibre opcionálisan tud kiszolgálót is használni az e-mailek " +"A calibre opcionálisan tud kiszolgálót is használni az emailek " "küldéséhez" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 @@ -19907,7 +19988,7 @@ msgstr "Kimenő levek kiszolgálójának portja. Alapbeállítás: 25" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:134 msgid "Your username on the mail server" -msgstr "Az Ön Felhasználóneve a levelező kiszolgálón" +msgstr "Az Ön felhasználóneve a levelező kiszolgálón" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:136 msgid "Your password on the mail server" @@ -19960,7 +20041,7 @@ msgstr "Hotmail használata" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:147 msgid "&Test email" -msgstr "Tes&zt e-mail küldése" +msgstr "Tes&zt email küldése" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:49 msgid "" @@ -20375,21 +20456,21 @@ msgstr "Nincs elérhető könyv a katalógus készítéséhez" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:305 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2477 msgid "Titles" -msgstr "" +msgstr "Címek" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:309 msgid "Genres" -msgstr "" +msgstr "Műfajok" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:311 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1780 msgid "Recently Added" -msgstr "" +msgstr "Utoljára hozzáadva" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:313 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1979 msgid "Recently Read" -msgstr "" +msgstr "Utoljára olvasva" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:315 msgid "Descriptions" @@ -20405,11 +20486,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:744 msgid "Sorting database" -msgstr "" +msgstr "Adatbázis rendezése" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:846 msgid "Sorting titles" -msgstr "" +msgstr "Címek rendezése" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:858 msgid "" @@ -20423,11 +20504,11 @@ msgstr "Nincs elérhető könyv a katalógusba illesztéshez" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2060 msgid "Genres HTML" -msgstr "" +msgstr "Műfajok HTML" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2457 msgid "Titles HTML" -msgstr "" +msgstr "Címek HTML" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 @@ -20445,7 +20526,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2932 msgid "NCX header" -msgstr "" +msgstr "NCX fejléc" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3009 msgid "NCX for Descriptions" @@ -20453,7 +20534,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3136 msgid "NCX for Series" -msgstr "" +msgstr "Sorozatok NCX" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format @@ -20467,59 +20548,59 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3267 msgid "NCX for Titles" -msgstr "" +msgstr "Címek NCX" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with %s" -msgstr "" +msgstr "Ezzel kezdődő címek: %s" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3356 #, python-format msgid "Titles beginning with '%s'" -msgstr "" +msgstr "Ezzel kezdődő címek: %s" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3398 msgid "NCX for Authors" -msgstr "" +msgstr "Szerzők NCX" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with %s" -msgstr "" +msgstr "Szerzők ezzel kezdődően: %s" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3479 #, python-format msgid "Authors beginning with '%s'" -msgstr "" +msgstr "Szerzők ezzel kezdődően: %s" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3520 msgid "NCX for Recently Added" -msgstr "" +msgstr "Utoljára hozzáadva NCX" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3713 msgid "NCX for Recently Read" -msgstr "" +msgstr "Utoljára olvasva NCX" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3855 msgid "NCX for Genres" -msgstr "" +msgstr "Műfajok NCX" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3980 msgid "Generating OPF" -msgstr "" +msgstr "OPF generálása" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4357 msgid "Thumbnails" -msgstr "" +msgstr "Miniatűrök" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4363 msgid "Thumbnail" -msgstr "" +msgstr "Miniatűr" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4897 msgid "Saving NCX" -msgstr "" +msgstr "NCX mentése" #: /home/kovid/work/calibre/src/calibre/library/check_library.py:26 msgid "Invalid titles" @@ -21393,6 +21474,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/restore.py:125 msgid "Cannot restore preferences. Backup file not found." msgstr "" +"A beállításokat nem lehet visszaállítani. Biztonsági mentés nem található." #: /home/kovid/work/calibre/src/calibre/library/restore.py:136 msgid "Finished restoring preferences and column metadata" @@ -21574,7 +21656,7 @@ msgid "" "Failed to calculate path for save to disk. Template: %(templ)s\n" "Error: %(err)s" msgstr "" -"A lemezre mentés útvonalát nem sikerült meghatározni. sablon: %(templ)s\n" +"A lemezre mentés útvonalát nem sikerült meghatározni. Sablon: %(templ)s\n" "Hiba: %(err)s" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:316 @@ -21652,20 +21734,20 @@ msgstr "" "szerverekről kell ehhez a szerverhez a visszautat megadni." #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:317 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:343 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:627 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:353 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:639 msgid "All books" msgstr "Minden könyv" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:318 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:342 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:626 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:352 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:638 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:584 msgid "Newest" msgstr "Legújabb" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:65 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:499 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:511 msgid "Loading, please wait" msgstr "Betöltés, kérjük várjon" @@ -21688,7 +21770,7 @@ msgid "Browsing %d books" msgstr "%d könyv böngészése" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:127 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:259 msgid "Average rating" msgstr "Átlagos értékelés" @@ -21702,77 +21784,77 @@ msgstr "%(prefix)s: %(rating).1f csillag" msgid "%d stars" msgstr "%d csillag" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:258 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:260 msgid "Popularity" msgstr "Gyakoriság" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:282 msgid "library" msgstr "könyvtár" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:281 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:283 msgid "home" msgstr "Kezdőlap" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:388 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:453 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:400 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:465 msgid "Browse books by" msgstr "Könyvek böngészése e szerint:" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:393 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:405 msgid "Choose a category to browse by:" msgstr "Válassza ki, mely kategória szerint kíván böngészni:" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:524 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:536 msgid "Browsing by" msgstr "Böngészés e szerint:" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:525 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:537 msgid "Up" msgstr "Fel" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:662 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:674 msgid "in" msgstr "ebben" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:665 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:677 msgid "Books in" msgstr "Könyvek:" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:759 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:771 msgid "Other formats" msgstr "Egyéb formátumok" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:766 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:778 #, python-format msgid "Read %(title)s in the %(fmt)s format" msgstr "%(title)s olvasása %(fmt)s formátumban" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:771 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:783 msgid "Get" msgstr "Letöltés" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:784 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:796 msgid "Details" msgstr "Részletek" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:786 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:798 msgid "Permalink" msgstr "Permalink" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:787 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:799 msgid "A permanent link to this book" msgstr "A könyvhöz tartozó permalink" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:799 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:811 msgid "This book has been deleted" msgstr "Ezt a könyvet törölték" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:897 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:909 msgid "in search" msgstr "a keresésben" -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:899 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:911 msgid "Matching books" msgstr "Egyező könyvek" @@ -21929,7 +22011,7 @@ msgstr "Az e-book konvertálás alapértelmezett kimeneti formátuma." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:393 msgid "Ordered list of formats to prefer for input." -msgstr "Rendezett lista az előnyberészesített formátumokról." +msgstr "Rendezett lista az előnyben részesített formátumokról." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:395 msgid "Read metadata from files" @@ -21998,7 +22080,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/filenames.py:295 msgid "File is open in another process" -msgstr "" +msgstr "A fájlt egy másik művelet is használja" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:31 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182 @@ -23133,7 +23215,7 @@ msgstr "A hitelesítés sikertelen a következő kiszolgálóval: %s" #: /home/kovid/work/calibre/src/calibre/utils/smtp.py:258 msgid "Control email delivery" -msgstr "E-mail küldés beállításai" +msgstr "Email küldés beállításai" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:121 msgid "Unknown section" @@ -23161,7 +23243,8 @@ msgstr "A következő letöltése nem sikerült: %s" #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -"A következő recepthez felhasználónévre és jelszóra van szüksége: „%s”." +"A következő hírösszeállításhoz felhasználónévre és jelszóra van szüksége: " +"„%s”." #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:892 msgid "Download finished" @@ -23255,7 +23338,7 @@ msgstr "A következő cikk letöltése nem sikerült: %s" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1489 msgid "Fetching feed" -msgstr "Hír letöltése" +msgstr "Hírek letöltése" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1633 msgid "" @@ -23275,7 +23358,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 msgid "You" -msgstr "Te" +msgstr "Ön" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:75 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84 @@ -24383,7 +24466,7 @@ msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:428 msgid "The number of seconds to wait before sending emails" -msgstr "Az e-mailek küldése előtti várakozás másodpercben" +msgstr "Az emailek küldése előtti várakozás másodpercben" #: /home/kovid/work/calibre/resources/default_tweaks.py:429 msgid "" @@ -24393,7 +24476,7 @@ msgid "" "making email sending fail. Changes will take effect only after a restart of\n" "calibre." msgstr "" -"Nyilvános e-mail szerverek, mint a gmail vagy a hotmail, használata estén " +"Nyilvános email szerverek, mint a gmail vagy a hotmail, használata estén " "ennyi másodpercet\n" "vár a levél elküldése előtt. Alapérték: 5 perc.\n" "Ennél alacsonyabb érték esetén a szerverek SPAM ellenőrzése kidobhatja a " @@ -24535,7 +24618,7 @@ msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:484 msgid "Compile General Program Mode templates to Python" -msgstr "Általános Program Mód sablonok lefordítása" +msgstr "Általános Program Mód sablonok lefordítása Pythonnal" #: /home/kovid/work/calibre/resources/default_tweaks.py:485 msgid "" @@ -24560,7 +24643,7 @@ msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:494 msgid "What format to default to when using the Tweak feature" -msgstr "" +msgstr "A Finomhangolásnál használt alapértelmezett formátum" #: /home/kovid/work/calibre/resources/default_tweaks.py:495 msgid "" diff --git a/src/calibre/translations/id.po b/src/calibre/translations/id.po index 11efca6e9e..f6356eaa7c 100644 --- a/src/calibre/translations/id.po +++ b/src/calibre/translations/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-12-21 05:12+0000\n" +"POT-Creation-Date: 2012-12-28 04:12+0000\n" "PO-Revision-Date: 2012-01-18 11:51+0000\n" "Last-Translator: Amri Ristadi \n" "Language-Team: Indonesian \n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2012-12-22 04:45+0000\n" +"X-Launchpad-Export-Date: 2012-12-29 04:47+0000\n" "X-Generator: Launchpad (build 16378)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 @@ -28,8 +28,8 @@ msgstr "Tidak ada apa-apanya" #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:376 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:377 -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:100 -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:101 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:115 #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:74 #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:77 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:667 @@ -53,6 +53,8 @@ msgstr "Tidak ada apa-apanya" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/rtf_input.py:289 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/rtf_input.py:291 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:140 @@ -131,11 +133,9 @@ msgstr "Tidak ada apa-apanya" #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:108 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:447 #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:455 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:411 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:414 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:167 @@ -147,20 +147,20 @@ msgstr "Tidak ada apa-apanya" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:145 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1416 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:55 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:825 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:440 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1106 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:439 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1103 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1319 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1322 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1325 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1328 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1416 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1413 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:261 @@ -1243,8 +1243,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:352 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:354 -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:115 -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:129 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:140 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:440 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:472 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:615 @@ -1388,27 +1388,31 @@ msgstr "" msgid "Communicate with the Hanvon N520 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:47 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:48 +msgid "Communicate with the Kibano eBook reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:61 msgid "Communicate with The Book reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:59 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:73 msgid "Communicate with the Libre Air reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:72 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:86 msgid "Communicate with the SpringDesign Alex eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:132 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:146 msgid "Communicate with the Azbooka" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:151 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:165 msgid "Communicate with the Elonex EB 511 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:171 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:185 msgid "Communicate with the Cybook Odyssey eBook reader." msgstr "" @@ -1638,7 +1642,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:646 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:404 msgid "Not Implemented" msgstr "" @@ -2191,35 +2195,35 @@ msgstr "" msgid "Communicate with the Teclast K3/K5 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:37 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:38 msgid "Communicate with the Newsmy reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:48 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:49 msgid "Communicate with the Archos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:58 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:59 msgid "Communicate with the Pico reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:70 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:71 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:81 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:82 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:91 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:92 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:103 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:114 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:115 msgid "Communicate with the Wexler reader." msgstr "" @@ -2418,6 +2422,7 @@ msgid "There is insufficient free space on the storage card" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:210 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/render/from_html.py:229 #, python-format msgid "Rendered %s" msgstr "" @@ -2955,55 +2960,57 @@ msgstr "" msgid "Use the new PDF conversion engine." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:71 -#, python-format +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:52 msgid "" -"The unit of measure. Default is inch. Choices are %s Note: This does not " -"override the unit for margins!" +"Normally, the PDF page size is set by the output profile chosen under page " +"options. This option will cause the page size settings under PDF Output to " +"override the size specified by the output profile." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:76 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:58 +#, python-format +msgid "" +"The unit of measure for page sizes. Default is inch. Choices are %s Note: " +"This does not override the unit for margins!" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:63 #, python-format msgid "" "The size of the paper. This size will be overridden when a non default " "output profile is used. Default is letter. Choices are %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:80 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:67 msgid "" "Custom size of the document. Use the form widthxheight EG. `123x321` to " "specify the width and height. This overrides any specified paper-size." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:85 -#, python-format -msgid "The orientation of the page. Default is portrait. Choices are %s" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:89 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:72 msgid "" "Preserve the aspect ratio of the cover, instead of stretching it to fill the " "full first page of the generated pdf." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:94 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:77 msgid "The font family used to render serif fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:97 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:80 msgid "The font family used to render sans-serif fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:100 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:83 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:87 msgid "The font family used to render monospaced fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:107 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:90 msgid "The default font size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:110 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:93 msgid "The default font size for monospaced text" msgstr "" @@ -4032,8 +4039,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:222 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1111 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1108 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:39 @@ -4045,14 +4052,14 @@ msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:770 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:85 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1109 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:771 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:159 msgid "Publisher" msgstr "" @@ -4085,13 +4092,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:92 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:161 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:982 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1228 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:201 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:780 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:792 msgid "Tags" msgstr "" @@ -4100,7 +4107,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:224 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:307 @@ -4112,7 +4119,7 @@ msgstr[0] "" msgstr[1] "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:778 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:94 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:164 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:127 msgid "Languages" @@ -4124,7 +4131,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:782 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:89 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:88 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" @@ -4244,48 +4251,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +msgid "Brazil" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:753 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:775 msgid "Amazon timed out. Try again later." msgstr "" @@ -4476,11 +4487,11 @@ msgid "HTML TOC generation options." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:160 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:176 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:778 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:790 msgid "Rating" msgstr "" @@ -4799,7 +4810,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/annotate.py:120 #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:228 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:256 @@ -4829,32 +4840,32 @@ msgstr "" msgid "Select book files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:189 msgid "Adding" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:190 msgid "Creating book records from ISBNs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:270 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:330 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:301 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:304 msgid "Select books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:342 msgid "Merged some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:343 #, python-format msgid "" "The following %d duplicate books were found and incoming book formats were " @@ -4862,21 +4873,21 @@ msgid "" "settings:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:365 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:366 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:376 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:381 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:411 msgid "Add to library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:392 #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:137 #: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/actions/store.py:106 @@ -4887,32 +4898,32 @@ msgstr "" msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:405 msgid "" "The following books are virtual and cannot be added to the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:411 msgid "No book files found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:417 msgid "Downloading books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:418 msgid "Downloading books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:437 msgid "Could not download files from the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:440 msgid "Could not download some files from the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:433 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:444 msgid "Could not download files" msgstr "" @@ -5029,6 +5040,7 @@ msgid "No existing calibre library found at %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:160 msgid "Choose Library" msgstr "" @@ -5199,7 +5211,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:423 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:975 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1007 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:114 @@ -5227,7 +5239,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:534 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:539 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:278 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:1016 msgid "Not allowed" @@ -5277,7 +5289,7 @@ msgstr "" msgid "Empty output file, probably the conversion process crashed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:401 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:405 #: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 @@ -5285,57 +5297,83 @@ msgstr "" msgid "%(title)s by %(author)s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:59 +msgid "Choose library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:138 +msgid "Library &path:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:146 +msgid "Browse for library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:149 +msgid "&Delete after copy" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:172 msgid "Copy to library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:173 msgid "Copy selected books to the specified library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:206 msgid "(delete after copy)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:210 +msgid "Choose library by path..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:227 msgid "Cannot copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:221 +msgid "Cannot copy to current library." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:232 msgid "No library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:233 #, python-format msgid "No library found at %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:186 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:239 msgid "Copying" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:250 msgid "Could not copy books: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:254 #, python-format msgid "Copied %(num)d books to %(loc)s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:258 msgid "Auto merged" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:259 msgid "" "Some books were automatically merged into existing records in the target " "library. Click Show details to see which ones. This behavior is controlled " "by the Auto merge option in Preferences->Adding books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:279 msgid "" "You cannot use other libraries while using the environment variable " "CALIBRE_OVERRIDE_DATABASE_PATH." @@ -5940,7 +5978,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:785 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:797 msgid "Show book details" msgstr "" @@ -6482,9 +6520,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:277 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:283 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:286 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 @@ -6545,7 +6583,7 @@ msgid "Click to open" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:180 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:834 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:846 msgid "Ids" msgstr "" @@ -6555,7 +6593,7 @@ msgid "Book %(sidx)s of %(series)s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:233 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1115 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1112 msgid "Collections" msgstr "" @@ -6666,7 +6704,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:47 #: /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:100 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 @@ -6824,7 +6862,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:258 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:260 msgid "Name" msgstr "" @@ -8037,48 +8075,59 @@ msgstr "" msgid "PDF Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:115 +msgid "" +"Note: The paper size settings below only take effect if you enable " +"the \"Override\" checkbox below. Otherwise the size from the output profile " +"will be used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:116 +msgid "&Override paper size set in output profile" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:117 msgid "&Paper Size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:102 -msgid "&Orientation:" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:118 msgid "&Custom size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:119 +msgid "&Unit:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:120 msgid "Preserve &aspect ratio of cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:374 msgid "Se&rif family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:375 msgid "&Sans family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:376 msgid "&Monospace family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:381 msgid "S&tandard font:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:125 msgid "Default font si&ze:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:378 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:380 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:395 @@ -8088,18 +8137,11 @@ msgstr "" msgid " px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:127 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:379 msgid "Monospace &font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:113 -msgid "" -"Note: The paper size settings below only take effect if you have set " -"the output profile to the default output profile. Otherwise the output " -"profile will override these settings." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/convert/pml_output.py:14 msgid "PMLZ Output" msgstr "" @@ -9236,6 +9278,14 @@ msgstr "" msgid "Reset author to Unknown" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:48 +msgid "Set the series of the new books to:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:60 +msgid "Reset series" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn.py:72 msgid "Some invalid ISBNs" msgstr "" @@ -9697,8 +9747,8 @@ msgid "Location" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1113 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1110 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:35 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:365 @@ -10887,7 +10937,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:80 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/store_dialog_ui.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:652 -#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:282 +#: /home/kovid/work/calibre/src/calibre/library/server/browse.py:284 msgid "Search" msgstr "" @@ -11225,7 +11275,7 @@ msgid "never delete" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:279 msgid " days" msgstr "" @@ -11810,7 +11860,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:169 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:271 msgid "Switch to Advanced mode" msgstr "" @@ -11884,39 +11934,39 @@ msgid "" "Add/Update recipe button. Continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263 msgid "Add custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:264 msgid "Available user recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:259 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:265 msgid "Add/Update &recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:266 msgid "&Remove recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 msgid "&Share recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:268 msgid "S&how recipe files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 msgid "Customize &builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 msgid "&Load recipe from file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 msgid "" "