diff --git a/Changelog.yaml b/Changelog.yaml index b50ae0e53c..b055de5142 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -19,6 +19,273 @@ # new recipes: # - title: +- version: 0.8.50 + date: 2012-05-04 + + new features: + - title: "Tweak Book: Allow tweaking of KF8 MOBI files. Useful to fine-tune the result of a conversion. Right click on the book and select Tweak Book to use the feature. Note that tweaking a MOBI file that contains both KF8 and older MOBI6 will cause the MOBI6 version to be discarded." + + - title: "AZW3 output plugin. This output plugin generates pure KF8 mobi files. These only work on the Kindle Fire and Kindle Touch with latest firmware." + + - title: "Conversion: Allow easy re-ordering of the search and replace expressions in the conversion dialog. Also apply the expressions in the same order that they were entered when doing the conversion." + + - title: "Automatically add the Tag 'Sample Book' when an Amazon sample is added to calibre" + + - title: "FB2 Input: Better handling of inline images." + tickets: [989869] + + bug fixes: + - title: "KF8 Output: Fix section to section jumps not working for documents with multi-level ToCs" + + - title: "EPUB Input: Handle the case of the metadata ToC containing a reference to the cover HTML file." + tickets: [993812] + + - title: "CHM Input: Handle files with deeply nested markup and non html files listed at the start of the manifest." + tickets: [993607] + + - title: "KF8 Output: Workaround Kindle Touch bug that causes the book to be rendered as black pages when a height is specified for " + + - title: "Fix regression in 0.8.49 that broke italics detection in heuristic processing on 32-bit systems." + tickets: [991380] + + - title: "KF8 Output: Fix joint MOBI6/KF8 books not being recognized as MOBI files by older Kindles" + + - title: "KF8 Output: Fix errors when processing documents with HTML comments and/or XML processing instructions" + + - title: "Get Books: Amazon fix prices not being found. B&N fix details link. ebooks.com: fix cover image. Website changes to various EU stores" + + - title: "FB2 Input: More robust base64 decoding to handle embedded images that are incorrectly encoded." + tickets: [990929] + + - title: "Fix scrolling with the cover browser updating only the selection in the book list, not the current book." + tickets: [990881] + + - title: "Save to Disk: Do not run out memory when saving very large files on systems with low RAM." + tickets: [990741] + + - title: "FB2 Output: Use 2 letter language codes in preference to 3-letter ones to not break poorly implemented FB2 readers" + tickets: [990026] + + - title: "EPUB Input: Auto set the media-type for OPF manifest entries with an empty media-type" + + improved recipes: + - National Post + - Daily Mirror + - Sun + - Newsweek Polska + - Max-Planck + - derStandard + - tweakers.net + + new recipes: + - title: George Monbiot + author: Darko Miletic + + - title: El Mundo + author: atordo + + - title: AraInfo and Diagonal + author: Ruben Pollan + + +- version: 0.8.49 + date: 2012-04-27 + + new features: + - title: "Experimental support for generating Amazon's new KF8 format MOBI files" + description: "calibre can now generate Amazon's new KF8 format MOBI files. + To turn on this feature, go to Preferences->Tweaks and click Plugin Tweaks. In the box add: + test_mobi_output_type = 'both' + calibre will now produce MOBI files that have both the old MOBI format and the new KF8 format in them. + To learn more about KF8, see: http://www.amazon.com/gp/feature.html?docId=1000729511 + Note that calibre support for KF8 is still experimental and there will likely be bugs." + + - title: "Upgrade to using cssutils 0.9.9 for CSS parsing. Improved speed and robustness." + + - title: "Show cover size in a tooltip in the conversion dialog" + tickets: [986958] + + - title: "Driver for Nook Simple Touch with Glow Light" + tickets: [989264] + + bug fixes: + - title: "Heuristics: When italicizing words do not operate on words not in between HTML tags." + tickets: [986298] + + - title: "Fix (I hope) the bulk metadata download process crashing for some people on OS X when clicking the Yes button to apply the updates." + tickets: [986658] + + - title: "Fix tooltip not being updated in the book details panel when pasting in a new cover" + tickets: [986958] + + - title: "Cover Browser: Wrap the title on space only, not in between words." + tickets: [986516] + + - title: "Edit metadata dialog: If a permission denied error occurs when clicking the next or prev buttons, stay on the current book." + tickets: [986903] + + - title: "Fix heuristics not removing unnecessary hyphens from the end of lines." + tickets: [822744] + + improved recipes: + - Metro Nieuws NL + - Der Tagesspiegel + + new recipes: + - title: Berria + author: Alayn Gortazar + + - title: Sol Haber + author: Onur Gungor + + - title: Telam + author: Darko Miletic + + - title: Richmond Times-Dispatch + author: jde + +- version: 0.8.48 + date: 2012-04-20 + + new features: + - title: "Conversion: The search and replace feature has been completely revamped." + description: "You can now use any number of search and replace + expression, not just three. You can also store and load frequently used + sets of search and replace expressions. Also, the wizard generates its + preview in a separate process to protect against crashes/memory leaks." + tickets: [983476,983484,983478] + + - title: "Support for the new '.azw3' files that Amazon recently started generating. calibre will now detect them as ebooks. It can also view/convert them, if they are DRM free." + + - title: "Drivers for Samsung Galaxy ACE GT-S5830L and HTC One X" + tickets: [981185] + + bug fixes: + - title: "Get Books: Support the new website design of Barnes & Noble" + + - title: "T1 driver: Fix books sent to SD card sometimes resulting problems when deleted." + tickets: [943586] + + - title: "Do not allow author names to be set to blank via the Manage authors function. Blank authors are now automatically set to 'Unknown'" + + - title: "MOBI Output: Handle background color specified on and in addition to tags." + tickets: [980813] + + - title: "MOBI Output: Fix underline style applied to parent element not getting inherited by children." + tickets: [985711] + + improved recipes: + - xkcd + - Metro Nieuws + - Calgary Herald + - Orlando Sentinel + - countryfile + - Heise + + new recipes: + - title: Various new Polish news sources + author: fenuks + + - title: Various Italian news sources + author: faber1971 + + - title: Jakarta Globe + author: rty + + - title: Acim Bilim Dergisi + author: thomass + +- version: 0.8.47 + date: 2012-04-13 + + new features: + - title: "Conversion pipeline: Add support for all the named entities in the HTML 5 spec." + tickets: [976056] + + - title: "Support for viewing and converting the Haodoo PDB ebook format" + tickets: [976478] + + - title: "Device driver for Laser EB720" + + bug fixes: + - title: "Fix regression in automatic adding in 0.8.46 that broke automatic adding if adding of duplicates is enabled and auto convert is also enabled" + tickets: [976336] + + - title: 'Fix "Tags" field in advanced search does not obey regex setting' + tickets: [980221] + + - title: "EPUB Input: Automatically extract cover image from simple HTML title page that consists of only a single tag, instead of rendering the page" + + - title: "Prevent errors when both author and author_sort are used in a template for reading metadata from filenames for files on a device" + + - title: "Amazon metadata download: Handle books whose titles start with a bracket." + tickets: [976365] + + - title: "Get Books: Fix downloading of purchased books from Baen" + tickets: [975929] + + + improved recipes: + - Forbes + - Caros Amigos + - Trouw + - Sun UK + - Metro + - Daily Mirror + + new recipes: + - title: "Melbourne Herald Sun" + author: Ray Hartley + + - title: "Editoriali and Zerocalcare" + author: faber1971 + +- version: 0.8.46 + date: 2012-04-06 + + new features: + - title: "Auto adding: When automatically adding files from a folder, automatically convert the files to the current output format after adding. This can be turned off via Preferences->Adding Books->Automatic Adding." + tickets: [969053] + + - title: "E-book viewer: When reading a MOBI file that is actually a KF8 book, show the format as being KF8" + + - title: "Content server: Workaround for android stock browser not support HTTP AUTH." + + - title: "Edit metadata dialog: Change the remove unused series button to a clear series button (as the remove unused series function is now automatic)" + + - title: "Driver for PocketBook 622." + tickets: [969875] + + bug fixes: + - title: "Run metadata downloads in a separate process to workaround memory leaks in third party plugins. Also removes the need to break up bulk metadata downloads into 100 book batches." + + - title: "Make tag browser filtering work when capital letters are entered." + + - title: "EPUB metadata: Ignore urn:isbn: prefix from ISBN declaration when reading metadata" + + - title: "Get books: Fix feedbooks store not showing all available formats" + + - title: "KF8 Input: When the KF8 book has no metadata ToC, try to extract the ToC from the HTML instead." + tickets: [969238] + + - title: "Fix regression that broke access to Preferences via the Preferences item in the calibre menu on OS X" + tickets: [969418] + + - title: "Fix bug that ignored metadata specified on the command line when using calibredb add" + + improved recipes: + - OReilly Premium + - Real Clear + - Soldier's Magazine + - Rue89 + + new recipes: + - title: The Southern Star + author: watou + + - title: Buenos Aires Herald + author: Darko Miletic + - version: 0.8.45 date: 2012-03-30 diff --git a/recipes/acim_bilim_dergisi.recipe b/recipes/acim_bilim_dergisi.recipe new file mode 100644 index 0000000000..5d674fe93a --- /dev/null +++ b/recipes/acim_bilim_dergisi.recipe @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1334868409(BasicNewsRecipe): + title = u'AÇIK BİLİM DERGİSİ' + description = ' Aylık çevrimiçi bilim dergisi' + __author__ = u'thomass' + oldest_article = 30 + max_articles_per_feed = 300 + auto_cleanup = True + encoding = 'UTF-8' + publisher = 'açık bilim' + category = 'haber, bilim,TR,dergi' + language = 'tr' + publication_type = 'magazine ' + conversion_options = { + 'tags' : category + ,'language' : language + ,'publisher' : publisher + ,'linearize_tables': True + } + cover_img_url = 'http://www.acikbilim.com/wp-content/themes/Equilibrium/images/logodene.jpg' + masthead_url = 'http://www.acikbilim.com/wp-content/themes/Equilibrium/images/logodene.jpg' + + + feeds = [(u'Tüm Yayınlar', u'http://www.acikbilim.com/feed')] diff --git a/recipes/adventure_zone_pl.recipe b/recipes/adventure_zone_pl.recipe index 65f4e3e52d..bb311606ac 100644 --- a/recipes/adventure_zone_pl.recipe +++ b/recipes/adventure_zone_pl.recipe @@ -9,6 +9,7 @@ class Adventure_zone(BasicNewsRecipe): no_stylesheets = True oldest_article = 20 max_articles_per_feed = 100 + index='http://www.adventure-zone.info/fusion/' use_embedded_content=False preprocess_regexps = [(re.compile(r"", re.IGNORECASE), lambda m: '')] remove_tags_before= dict(name='td', attrs={'class':'main-bg'}) @@ -45,6 +46,19 @@ class Adventure_zone(BasicNewsRecipe): skip_tag = skip_tag.findAll(name='a') for r in skip_tag: if r.strong: - word=r.strong.string - if word and (('zapowied' in word) or ('recenzj' in word) or ('solucj' in word)): - return self.index_to_soup('http://www.adventure-zone.info/fusion/print.php?type=A&item'+r['href'][r['href'].find('article_id')+7:], raw=True) \ No newline at end of file + word=r.strong.string.lower() + if word and (('zapowied' in word) or ('recenzj' in word) or ('solucj' in word) or ('poradnik' in word)): + return self.index_to_soup('http://www.adventure-zone.info/fusion/print.php?type=A&item'+r['href'][r['href'].find('article_id')+7:], raw=True) + + def preprocess_html(self, soup): + footer=soup.find(attrs={'class':'news-footer middle-border'}) + if footer and len(footer('a'))>=2: + footer('a')[1].extract() + for item in soup.findAll(style=True): + del item['style'] + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] + return soup + + \ No newline at end of file diff --git a/recipes/ara_info.recipe b/recipes/ara_info.recipe new file mode 100644 index 0000000000..0345b9ed6e --- /dev/null +++ b/recipes/ara_info.recipe @@ -0,0 +1,19 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__copyright__ = 'Ruben Pollan ' +__docformat__ = 'restructuredtext en' + +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1335656316(BasicNewsRecipe): + title = u'AraInfo.org' + __author__ = 'Ruben Pollan' + description = 'Regional newspaper from Aragon' + language = 'es' + + oldest_article = 7 + max_articles_per_feed = 100 + auto_cleanup = True + cover_url = u'http://arainfo.org/wordpress/wp-content/uploads/2011/10/logo-web_alta.jpg' + + feeds = [(u'Movimientos', u'http://arainfo.org/category/movimientos/feed/'), (u'Econom\xeda', u'http://arainfo.org/category/economia/feed/'), (u'Ecolog\xeda', u'http://arainfo.org/category/ecologia/feed/'), (u'Culturas', u'http://arainfo.org/category/culturas/feed/'), (u'Altavoz', u'http://arainfo.org/category/altavoz/feed/')] diff --git a/recipes/ba_herald.recipe b/recipes/ba_herald.recipe new file mode 100644 index 0000000000..939879ccaa --- /dev/null +++ b/recipes/ba_herald.recipe @@ -0,0 +1,80 @@ +__license__ = 'GPL v3' +__copyright__ = '2012, Darko Miletic ' +''' +www.buenosairesherald.com +''' + +from calibre import strftime +from calibre.web.feeds.news import BasicNewsRecipe + +class BuenosAiresHerald(BasicNewsRecipe): + title = 'Buenos Aires Herald' + __author__ = 'Darko Miletic' + description = 'A world of information in a few words' + publisher = 'Editorial Nefir S.A.' + category = 'news, politics, Argentina' + oldest_article = 2 + max_articles_per_feed = 200 + no_stylesheets = True + encoding = 'utf8' + use_embedded_content = False + language = 'en_AR' + remove_empty_feeds = True + publication_type = 'newspaper' + masthead_url = 'http://www.buenosairesherald.com/img/logo.jpg' + INDEX = 'http://www.buenosairesherald.com' + extra_css = """ + body{font-family: Arial,Helvetica,sans-serif } + img{margin-bottom: 0.4em; display:block} + h1{font-family: Georgia,serif} + #fecha{text-align: right; font-size: small} + """ + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + remove_tags = [dict(name=['meta','link','iframe'])] + keep_only_tags = [dict(attrs={'class':'nota_texto p'})] + + + feeds = [ + (u'Argentina' , u'http://www.buenosairesherald.com/argentina' ) + ,(u'World' , u'http://www.buenosairesherald.com/world' ) + ,(u'Latin America' , u'http://www.buenosairesherald.com/latin-america' ) + ,(u'Entertainment' , u'http://www.buenosairesherald.com/entertainment' ) + ,(u'Sports' , u'http://www.buenosairesherald.com/sports' ) + ] + + def print_version(self, url): + artidraw = url.rpartition('/article/')[2] + artid = artidraw.partition('/')[0] + return 'http://www.buenosairesherald.com/articles/print.aspx?ix=' + artid + + + def parse_index(self): + totalfeeds = [] + lfeeds = self.get_feeds() + for feedobj in lfeeds: + feedtitle, feedurl = feedobj + self.report_progress(0, ('Fetching feed')+' %s...'%(feedtitle if feedtitle else feedurl)) + articles = [] + soup = self.index_to_soup(feedurl) + for item in soup.findAll('div', attrs={'class':'nota_texto_seccion'}): + description = self.tag_to_string(item.h2) + atag = item.h2.find('a') + if atag and atag.has_key('href'): + url = self.INDEX + atag['href'] + title = description + date = strftime(self.timefmt) + articles.append({ + 'title' :title + ,'date' :date + ,'url' :url + ,'description':description + }) + totalfeeds.append((feedtitle, articles)) + return totalfeeds diff --git a/recipes/benchmark_pl.recipe b/recipes/benchmark_pl.recipe index cc74cc9128..00eea1be68 100644 --- a/recipes/benchmark_pl.recipe +++ b/recipes/benchmark_pl.recipe @@ -68,4 +68,7 @@ class Benchmark_pl(BasicNewsRecipe): self.image_article(soup, soup.body) else: self.append_page(soup, soup.body) + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.INDEX + a['href'] return soup diff --git a/recipes/berria.recipe b/recipes/berria.recipe new file mode 100644 index 0000000000..06f8344988 --- /dev/null +++ b/recipes/berria.recipe @@ -0,0 +1,44 @@ +__license__ = 'GPL v3' +__copyright__ = '2012, Alayn Gortazar ' +''' +www.berria.info +''' + +from calibre.web.feeds.news import BasicNewsRecipe + + +class Berria(BasicNewsRecipe): + title = 'Berria' + __author__ = 'Alayn Gortazar' + description = 'Euskal Herriko euskarazko egunkaria' + publisher = 'Berria' + category = 'news, politics, sports, Basque Country' + oldest_article = 2 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + language = 'eu' + remove_empty_feeds = True + masthead_url = 'http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Berria_Logo.svg/400px-Berria_Logo.svg.png' + + keep_only_tags = [ + dict(id='goiburua'), + dict(name='div', attrs={'class':['ber_ikus']}), + dict(name='section', attrs={'class':'ber_ikus'}) + ] + remove_tags = [ + dict(name='a', attrs={'class':'iruzkinak'}), + dict(name='div', attrs={'class':'laguntzaileak'}) + ] + + extra_css = '#goiburua{font-weight: bold} .zintiloa{font-size: small} .sarrera{color:#666} .titularra{font-size: x-large} .sarrera{font-weight: bold} .argazoin{color:#666; font-size: small}' + + feeds = [ + (u'Edizioa jarraia', u'http://berria.info/rss/ediziojarraia.xml'), + (u'Iritzia', u'http://berria.info/rss/iritzia.xml'), + (u'Euskal Herria', u'http://berria.info/rss/euskalherria.xml'), + (u'Ekonomia', u'http://berria.info/rss/ekonomia.xml'), + (u'Mundua', u'http://berria.info/rss/mundua.xml'), + (u'Kirola', u'http://berria.info/rss/kirola.xml'), + (u'Plaza', u'http://berria.info/rss/plaza.xml') + ] diff --git a/recipes/calgary_herald.recipe b/recipes/calgary_herald.recipe index dc919a76f8..12134bc9a4 100644 --- a/recipes/calgary_herald.recipe +++ b/recipes/calgary_herald.recipe @@ -1,220 +1,35 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' - -''' -www.canada.com -''' - -import re -from calibre.web.feeds.news import BasicNewsRecipe -from calibre.ebooks.BeautifulSoup import BeautifulStoneSoup - - -class CanWestPaper(BasicNewsRecipe): - - # un-comment the following four lines for the Victoria Times Colonist -## title = u'Victoria Times Colonist' -## url_prefix = 'http://www.timescolonist.com' -## description = u'News from Victoria, BC' -## fp_tag = 'CAN_TC' - - # un-comment the following four lines for the Vancouver Province -## title = u'Vancouver Province' -## url_prefix = 'http://www.theprovince.com' -## description = u'News from Vancouver, BC' -## fp_tag = 'CAN_VP' - - # un-comment the following four lines for the Vancouver Sun -## title = u'Vancouver Sun' -## url_prefix = 'http://www.vancouversun.com' -## description = u'News from Vancouver, BC' -## fp_tag = 'CAN_VS' - - # un-comment the following four lines for the Edmonton Journal -## title = u'Edmonton Journal' -## url_prefix = 'http://www.edmontonjournal.com' -## description = u'News from Edmonton, AB' -## fp_tag = 'CAN_EJ' - - # un-comment the following four lines for the Calgary Herald - title = u'Calgary Herald' - url_prefix = 'http://www.calgaryherald.com' - description = u'News from Calgary, AB' - fp_tag = 'CAN_CH' - - # un-comment the following four lines for the Regina Leader-Post -## title = u'Regina Leader-Post' -## url_prefix = 'http://www.leaderpost.com' -## description = u'News from Regina, SK' -## fp_tag = '' - - # un-comment the following four lines for the Saskatoon Star-Phoenix -## title = u'Saskatoon Star-Phoenix' -## url_prefix = 'http://www.thestarphoenix.com' -## description = u'News from Saskatoon, SK' -## fp_tag = '' - - # un-comment the following four lines for the Windsor Star -## title = u'Windsor Star' -## url_prefix = 'http://www.windsorstar.com' -## description = u'News from Windsor, ON' -## fp_tag = 'CAN_' - - # un-comment the following four lines for the Ottawa Citizen -## title = u'Ottawa Citizen' -## url_prefix = 'http://www.ottawacitizen.com' -## description = u'News from Ottawa, ON' -## fp_tag = 'CAN_OC' - - # un-comment the following four lines for the Montreal Gazette -## title = u'Montreal Gazette' -## url_prefix = 'http://www.montrealgazette.com' -## description = u'News from Montreal, QC' -## fp_tag = 'CAN_MG' - - - language = 'en_CA' - __author__ = 'Nick Redding' - no_stylesheets = True - timefmt = ' [%b %d]' - extra_css = ''' - .timestamp { font-size:xx-small; display: block; } - #storyheader { font-size: medium; } - #storyheader h1 { font-size: x-large; } - #storyheader h2 { font-size: large; font-style: italic; } - .byline { font-size:xx-small; } - #photocaption { font-size: small; font-style: italic } - #photocredit { font-size: xx-small; }''' - keep_only_tags = [dict(name='div', attrs={'id':'storyheader'}),dict(name='div', attrs={'id':'storycontent'})] - remove_tags = [{'class':'comments'}, - dict(name='div', attrs={'class':'navbar'}),dict(name='div', attrs={'class':'morelinks'}), - dict(name='div', attrs={'class':'viewmore'}),dict(name='li', attrs={'class':'email'}), - dict(name='div', attrs={'class':'story_tool_hr'}),dict(name='div', attrs={'class':'clear'}), - dict(name='div', attrs={'class':'story_tool'}),dict(name='div', attrs={'class':'copyright'}), - dict(name='div', attrs={'class':'rule_grey_solid'}), - dict(name='li', attrs={'class':'print'}),dict(name='li', attrs={'class':'share'}),dict(name='ul', attrs={'class':'bullet'})] - - def get_cover_url(self): - from datetime import timedelta, date - if self.fp_tag=='': - return None - cover = 'http://webmedia.newseum.org/newseum-multimedia/dfp/jpg'+str(date.today().day)+'/lg/'+self.fp_tag+'.jpg' - br = BasicNewsRecipe.get_browser() - daysback=1 - try: - br.open(cover) - except: - while daysback<7: - cover = 'http://webmedia.newseum.org/newseum-multimedia/dfp/jpg'+str((date.today() - timedelta(days=daysback)).day)+'/lg/'+self.fp_tag+'.jpg' - br = BasicNewsRecipe.get_browser() - try: - br.open(cover) - except: - daysback = daysback+1 - continue - break - if daysback==7: - self.log("\nCover unavailable") - cover = None - return cover - - def fixChars(self,string): - # Replace lsquo (\x91) - fixed = re.sub("\x91","‘",string) - # Replace rsquo (\x92) - fixed = re.sub("\x92","’",fixed) - # Replace ldquo (\x93) - fixed = re.sub("\x93","“",fixed) - # Replace rdquo (\x94) - fixed = re.sub("\x94","”",fixed) - # Replace ndash (\x96) - fixed = re.sub("\x96","–",fixed) - # Replace mdash (\x97) - fixed = re.sub("\x97","—",fixed) - fixed = re.sub("’","’",fixed) - return fixed - - def massageNCXText(self, description): - # Kindle TOC descriptions won't render certain characters - if description: - massaged = unicode(BeautifulStoneSoup(description, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)) - # Replace '&' with '&' - massaged = re.sub("&","&", massaged) - return self.fixChars(massaged) - else: - return description - - def populate_article_metadata(self, article, soup, first): - if first: - picdiv = soup.find('body').find('img') - if picdiv is not None: - self.add_toc_thumbnail(article,re.sub(r'links\\link\d+\\','',picdiv['src'])) - xtitle = article.text_summary.strip() - if len(xtitle) == 0: - desc = soup.find('meta',attrs={'property':'og:description'}) - if desc is not None: - article.summary = article.text_summary = desc['content'] - - def strip_anchors(self,soup): - paras = soup.findAll(True) - for para in paras: - aTags = para.findAll('a') - for a in aTags: - if a.img is None: - a.replaceWith(a.renderContents().decode('cp1252','replace')) - return soup - - def preprocess_html(self, soup): - return self.strip_anchors(soup) - - - - def parse_index(self): - soup = self.index_to_soup(self.url_prefix+'/news/todays-paper/index.html') - - articles = {} - key = 'News' - ans = ['News'] - - # Find each instance of class="sectiontitle", class="featurecontent" - for divtag in soup.findAll('div',attrs={'class' : ["section_title02","featurecontent"]}): - #self.log(" div class = %s" % divtag['class']) - if divtag['class'].startswith('section_title'): - # div contains section title - if not divtag.h3: - continue - key = self.tag_to_string(divtag.h3,False) - ans.append(key) - self.log("Section name %s" % key) - continue - # div contains article data - h1tag = divtag.find('h1') - if not h1tag: - continue - atag = h1tag.find('a',href=True) - if not atag: - continue - url = self.url_prefix+'/news/todays-paper/'+atag['href'] - #self.log("Section %s" % key) - #self.log("url %s" % url) - title = self.tag_to_string(atag,False) - #self.log("title %s" % title) - pubdate = '' - description = '' - ptag = divtag.find('p'); - if ptag: - description = self.tag_to_string(ptag,False) - #self.log("description %s" % description) - author = '' - autag = divtag.find('h4') - if autag: - author = self.tag_to_string(autag,False) - #self.log("author %s" % author) - if not articles.has_key(key): - articles[key] = [] - articles[key].append(dict(title=title,url=url,date=pubdate,description=description,author=author,content='')) - - ans = [(key, articles[key]) for key in ans if articles.has_key(key)] - return ans +from calibre.web.feeds.news import BasicNewsRecipe + +class CalgaryHerald(BasicNewsRecipe): + title = u'Calgary Herald' + oldest_article = 3 + max_articles_per_feed = 100 + + feeds = [ + (u'News', u'http://rss.canada.com/get/?F233'), + (u'Calgary', u'http://www.calgaryherald.com/scripts/sp6query.aspx?catalog=cahr&tags=keyword|calgary&output=rss?link=http%3a%2f%2fwww.calgaryherald'), + (u'Alberta', u'http://www.calgaryherald.com/scripts/Sp6Query.aspx?catalog=CAHR&tags=Keyword|Alberta&output=rss?link=http%3A%2F%2Fwww.calgaryherald.com%2Fnews%2Falberta%2Findex.html'), + (u'Politics', u'http://rss.canada.com/get/?F7551'), + (u'National', u'http://rss.canada.com/get/?F7552'), + (u'World', u'http://rss.canada.com/get/?F7553'), + ] + __author__ = 'rty' + pubisher = 'Calgary Herald' + description = 'Calgary, Alberta, Canada' + category = 'News, Calgary, Alberta, Canada' + + + remove_javascript = True + use_embedded_content = False + no_stylesheets = True + language = 'en_CA' + encoding = 'utf-8' + conversion_options = {'linearize_tables':True} + ##masthead_url = 'http://www.calgaryherald.com/index.html' + keep_only_tags = [ + dict(name='div', attrs={'id':'storyheader'}), + dict(name='div', attrs={'id':'storycontent'}) + + ] + remove_tags_after = {'class':"story_tool_hr"} + diff --git a/recipes/camera_di_commercio_di_bari.recipe b/recipes/camera_di_commercio_di_bari.recipe new file mode 100644 index 0000000000..c80a825883 --- /dev/null +++ b/recipes/camera_di_commercio_di_bari.recipe @@ -0,0 +1,17 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1331729727(BasicNewsRecipe): + title = u'Camera di Commercio di Bari' + oldest_article = 7 + __author__ = 'faber1971' + description = 'News from the Chamber of Commerce of Bari' + language = 'it' + max_articles_per_feed = 100 + auto_cleanup = True + masthead_url = 'http://www.ba.camcom.it/grafica/layout-bordo/logo_camcom_bari.png' + feeds = [(u'Camera di Commercio di Bari', u'http://feed43.com/4715147488845101.xml')] + +__license__ = 'GPL v3' +__copyright__ = '2012, faber1971' +__version__ = 'v1.00' +__date__ = '17, April 2012' diff --git a/recipes/caros_amigos.recipe b/recipes/caros_amigos.recipe index 48edceacba..7edcfb07c8 100644 --- a/recipes/caros_amigos.recipe +++ b/recipes/caros_amigos.recipe @@ -1,7 +1,5 @@ __copyright__ = '2011, Pablo Aldama ' - from calibre.web.feeds.news import BasicNewsRecipe - class AdvancedUserRecipe1311839910(BasicNewsRecipe): title = u'Caros Amigos' oldest_article = 20 @@ -9,9 +7,8 @@ class AdvancedUserRecipe1311839910(BasicNewsRecipe): language = 'pt_BR' __author__ = 'Pablo Aldama' - feeds = [(u'Caros Amigos', u'http://carosamigos.terra.com.br/index/index.php?format=feed&type=rss')] + feeds = [(u'Caros Amigos', u'http://carosamigos.terra.com.br/index2/index.php?format=feed&type=rss')] keep_only_tags = [dict(name='div', attrs={'class':['blog']}) ,dict(name='div', attrs={'class':['blogcontent']}) ] remove_tags = [dict(name='div', attrs={'class':'addtoany'})] - diff --git a/recipes/cd_action.recipe b/recipes/cd_action.recipe index ff46774dc9..4e19fbc6c1 100644 --- a/recipes/cd_action.recipe +++ b/recipes/cd_action.recipe @@ -6,6 +6,7 @@ class CD_Action(BasicNewsRecipe): description = 'cdaction.pl - polish games magazine site' category = 'games' language = 'pl' + index='http://www.cdaction.pl' oldest_article = 8 max_articles_per_feed = 100 no_stylesheets= True @@ -17,4 +18,10 @@ class CD_Action(BasicNewsRecipe): def get_cover_url(self): soup = self.index_to_soup('http://www.cdaction.pl/magazyn/') self.cover_url='http://www.cdaction.pl'+ soup.find(id='wspolnik').div.a['href'] - return getattr(self, 'cover_url', self.cover_url) \ No newline at end of file + return getattr(self, 'cover_url', self.cover_url) + + def preprocess_html(self, soup): + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] + return soup \ No newline at end of file diff --git a/recipes/comics_com.recipe b/recipes/comics_com.recipe index a552470ff3..4c08dfea90 100644 --- a/recipes/comics_com.recipe +++ b/recipes/comics_com.recipe @@ -24,231 +24,122 @@ class Comics(BasicNewsRecipe): feeds = [] for title, url in [ ("9 Chickweed Lane", "http://comics.com/9_chickweed_lane"), - # "Three generations of family with strong characters and flights of fancy . A rarity in the comics, 9 Chickweed Lane spotlights music and dance with superb artistry that complements Brooke McEldowney\u2019s strong-minded characters. A popular comic strip about three generations of family, 9 Chickweed Lane is the story of a young woman who moves away from home to perform with a prestigious metropolitan ballet company in New York City. She is followed there by her childhood friend and recent love interest. McEldowney knows his territory. He attended New York City's Juilliard School, and later studied and performed at the Mozarteum in Salzburg, Austria." ("Agnes", "http://comics.com/agnes"), - # "Agnes is a young girl with an imagination just a bit too big for her head. She lives with her grandma in a house trailer in their community called \"The People's Court.\" The spillover is handled by her best friend, Trout, a realist who helps manage their journey up the river to adulthood ... but river journeys are slow when you're both stuck in boot-sucking mud! The river of life sometimes leaves a lot of messy puddles. It's a scramble through youth's treacherous minefield. Agnes has big dreams. Sometimes she wakes up in the middle, sometimes she sleeps right through them. Everybody has dreams, and that's why everybody can identify with her!" ("Alley Oop", "http://comics.com/alley_oop"), - # "The adventures of an irrepressible time-traveling caveman. Alley Oop, the classic caveman comic strip created in 1933 by V.T. Hamlin, is drawn by Jack Bender and written by Carole Bender. The strip revolves around the irrepressible Alley Oop, who travels from prehistoric Moo all the way to the 21st century in his friend Doc Wonmug's time machine. Other favorite regulars in the strip include King Guz and Queen Umpa of Moo, Wonmug's assistants Oscar and Ava, and Alley Oop's girlfriend Ooola. " ("Andy Capp", "http://comics.com/andy_capp"), - # "Andy Capp, the irrepressible pub dweller, has been making readers smile since 1958. Created by Reg Smythe, Andy Capp first appeared in the Daily Mirror newspapers of England in 1958 as a cartoon panel. It quickly became a favorite throughout the country, as readers everywhere could identify with the good-for-nothing Andy and his smart-mouthed wife, Flo." ("Arlo & Janis", "http://comics.com/arlo&janis"), - # "A couple of \u201860s kids raising a teenage son in a complicated modern world. Still romantic after all these years, Arlo and Janis are dreamers who still have to do the household chores. Jimmy Johnson's unique humor and remarkable insight have made Arlo and Janis one of America's favorite comic couples. Taking a funny, realistic look at marriage and parenthood, Johnson portrays their everyday lives as they raise their adolescent son, Gene. As parents raising a teenager, Arlo and Janis have to face the fact that they're not the young ones anymore. A warm, offbeat family comedy with an adult perspective, Arlo & Janis has earned a loyal following of married couples, working parents and people who enjoy Johnson's dry, incisive wit. " ("B.C.", "http://comics.com/bc"), - # "Set in prehistoric times, it features a group of cavemen and anthropomorphic animals from various geologic eras. B.C. is an American newspaper comic strip created in 1958, written and drawn by Johnny Hart until his death in 2007. Hart died on April 7, 2007 after suffering a stroke at his home in Nineveh, New York, but the strip continues. Both Hart's daughter Perri Hart and his grandson Mason Mastroianni were involved with the strip prior to his death and have taken over the drawing and writing duties, with contributions by Mick Mastroianni." ("Ballard Street", "http://comics.com/ballard_street"), - # "Featuring Scooter, the dog who loves to take baths, but only with his scuba gear. Cartoonist Jerry Van Amerongen is at his best, creating an assortment of panels that have one thing in common: an intense level of absurdity! In May of 2006 Ballard Street was awarded the Best Newspaper Cartoon Panel Of The Year Award by the National Cartoonist Society." # ("Ben", "http://comics.com/ben"), - # "Ben does away with the stereotypes of seniors being cranky, miserable and having limited interests and is a more realistic portrayal of older people as active, healthy and in love after all these years. BEN is a new comic strip about family life as seen through the eyes of a retired couple who have offered to babysit their first grandson since their daughter went back to work. Artist Daniel Shelton touches on everyday life and today's issues with humor and affection, bringing to life characters in which we are sure to recognize ourselves and our families. Born in 1965 in Quebec's Eastern Townships, Daniel Shelton knew very early on that he wanted to write and draw his own daily comic strip. Creating and publishing comics throughout his teens, he was awarded two consecutive grants from the Cultural Ministry to study at the Joe Kubert school of Cartooning in New Jersey and School of Visual Arts in New York. \"Ben\" was first published six years ago and has since appeared in newspapers across North America and Asia, in English and French. Two compilation books have been published, winning Shelton an award at the Quebec International Comics Convention. Shelton lives in Hudson, Quebec, with his wife Lorina, his three sons Nicholas (9), Michael (5) and Alec (1) and their golden retriever Max." # ("Betty", "http://comics.com/betty"), - # "A working-class hero whose spirit cannot be broken by the endless series of outrages that make up modern life. Gary Delainey writes and Gerry Rasmussen draws, and together this cartooning duo from Alberta, Canada creates Betty, a smart, savvy comic character who is unapologetically ordinary, happy and female. Betty is true modern woman - a wife, mother and working woman. She is a confident, witty lady juggling the demands of family and career." # ("Big Nate", "http://comics.com/big_nate"), - # "The misadventures of an energetic sixth grader who is also an aspiring cartoonist. Aspiring cartoonist Nate Wright is 11 years old, four-and-a-half feet tall, and the all-time record holder for detentions in school history. He's a self-described genius and sixth grade Renaissance Man. Nate, who lives with his dad and older sister, enjoys pestering his family and teachers with his sarcasm. To draw Big Nate, Lincoln Peirce relies on memories of his own childhood and the experiences he collected teaching art at a New York City high school. Peirce occasionally turns his pen over to his creation, and readers get to see life through Nate's eyes as he doodles his adventures in his notebook. Born in Iowa, Peirce grew up in New Hampshire and began creating his own comic strips in the sixth grade. He has also created animated shorts for the Cartoon Network." # ("Brevity", "http://comics.com/brevity"), - # "It\u2019s not only the soul of wit; it's also sharply intelligent, amusingly idiosyncratic and uproariously funny. It's also not your normal comics fare. In the hands of Guy Endore-Kaiser and Rodd Perry, Brevity is sharply intelligent, amusingly idiosyncratic and often uproariously funny. The mix of Guy's sly sense of humor and Rodd's ingeniously understated art makes this feature unlike anything else in the comics today." # ("Candorville", "http://comics.com/candorville"), - # "Brutally frank yet evenhanded, Candorville explores social issues, politics and current events. In an upbeat way. Honest. A diverse group of friends living in the inner city, exploring issues such as bigotry, poverty, homelessness, biracialism, the culture of victimhood, youth and personal responsibility. This includes politics and current events seen through the eyes of its main characters; Lemont Brown, a young aspiring writer; Susan Garcia, a young woman working in the corporate world; and Clyde, an angry young man who makes the wrong choices in life. Darrin Bell attended the University of California Berkeley. His cartoons have appeared in the Los Angeles Times, San Francisco Chronicle, The New York Times and several other publications, as well as on MTV, CNN, CBS, NBC and ABC. The cartoons come from a black\/minority perspective but comment on a wide range of issues." # ("Cheap Thrills", "http://comics.com/cheap_thrills"), - # "Tasty recipes in comic-strip form that are easy enough for the novice cook, but delicious enough to please the more experienced chef. Cheap Thrills Cuisine offers recipes, whipped up by Chef Peppi, the alter-ego of chef Bill Lombardo and cartoonist Thach Bui. " # ("Committed", "http://comics.com/committed"), - # "Committed is an irreverent comic panel about modern family life when both parents work. Michael Fry created Committed for the alternative weekly The Houston Press in 1991 and United Feature Syndicate began distributing it nationally in April 1994. Committed currently appears in newspapers nationwide. Committed is full of wry humor, warm heart and wild cynicism and has found its way onto that most coveted of newspaper comic strip display spots -- refrigerator doors from Maine to Malibu. Fry attended Baylor University in Waco, Tex., and holds a bachelor of arts in history from the University of Texas at Austin. He was an editorial cartoonist for the student newspapers at both universities, and his first professional cartoon was published in Playboy. He currently creates the suburban farce Over the Hedge with T Lewis for United Feature Syndicate and the monthly \"Out the Window\" cartoon for Windows Sources magazine. His published works include five cartoon anthologies, What I Want to Be When They Grow Up: The First Collection of Committed (Andrews and McMeel, 1996), Over the Hedge with T Lewis (Andrews and McMeel, 1996), When I Was Short (Avon Books, 1992), Scotty: Born to Be Mild (Fine Toon Books, 1989) and Scotty's Houston: The View From Cafe Phil (Loud Books, 1988)." # ("Cow & Boy", "http://comics.com/cow&boy"), - # "The unlikely friendship of a boy and his cow. This beautifully drawn, strikingly funny strip by Mark Leiknes stars Billy, a regular boy who enjoys fishing, biking and hanging out with his best friend named Cow, who just happens to have four stomachs and a set of udders. Billy's dad is a farmer who enjoys a hard day's work and wishes his only son had not befriended a cow. Billy's mom is very loving, but has no room in her house for 800-pound animals. Billy's sister, Tracy, is a teenager who gets embarrassed by her brother and his cow. Martin, Billy's nerdy friend, enjoys hanging out with Billy and Cow. " # ("Daddy's Home", "http://comics.com/daddys_home"), - # "Peter is a stay-at-home Dad, freelance copywriter and would-be novelist -- pretty much in that order. Daddy's Home cast of characters: Peter is a stay-at-home Dad, freelance copywriter and would-be novelist -- pretty much in that order. He works hard, yet believes strongly in the power of sleeping in, and his erratic schedule never prevents him from performing his duties as a husband and father \u2026 not intentionally, anyway. Peter's wife Peggy is a smart, educated woman with a full-time job, who likes things organized a certain way. And by \u201ca certain way,\u201d she means \"her way.\" Their son Elliot is a smart kid on a crusade for knowledge. He's close to his parents, especially his Dad, and relies on both of them for answers to his boundless cache of questions. He also likes to learn things on his own, through trial and error -- a tendency his parents encourage when it's not life threatening. " # ("Dog eat Doug", "http://comics.com/dog_eat_doug"), - # "Dog Eat Doug is inspired by a husband's life as a homeowner and father of a chocolate Labrador puppy. With the support of his wife, Tammy, and the inspiration of his dog, Sophie, Brian Anderson created Dog eat Doug." # ("Drabble", "http://comics.com/drabble"), - # "Silly family antics and goofball humor, the Drabble family tickles readers' funny bones with outrageous antics. Kevin Fagan's lighthearted family strip chronicles the zany mishaps of his offbeat characters, especially goofball college student Norman Drabble and his donut-eating father Ralph. One of the best-loved families in the comics, the Drabble clan also includes smart younger brother Patrick, precocious little sister Penny, and June, the Drabble matriarch best known as \"Honeybunch.\" From Norm's relentless pursuit of his dream girl to Ralph's hilarious power struggles with Oogie the cat, Drabble is always full of witty, wacky and wonderful humor. The genuine love that keeps the Drabbles from driving each other crazy makes it one of the best family comic strips around, and the loony things they do make it one of the funniest." # ("F Minus", "http://comics.com/f_minus"), - # "Though short on life lessons, precious moments, and pearls of wisdom, this quirky comic strip is profoundly funny. F Minus, by Tony Carrillo, is a comic strip that begs the question, \"Why are we here?\" \"What is life all about?\" and \"Can I take only one shower per week if it's seven times the normal length?\" This very funny, very quirky comic strip was chosen by more than 200,000 college students as the winner of the \"mtvU Strips\" contest. F Minus is a strip short on life lessons, precious moments, and pearls of wisdom. Instead, it tackles life's serious issues, pins them to the ground and steals their lunch money. Then it feels a little bit guilty and gives some of it back." # ("Family Tree", "http://comics.com/family_tree"), - # "Modern family life is a bigger challenge than saving the planet. Pulitzer Prize-winning editorial cartoonist Signe Wilkinson brings her unique style and famous irreverence to the comics with Family Tree, a sophisticated contemporary family comedy. Ames, Maggie, Twig and Teddy Tree are living green \u2013 but modern family life could prove to be a bigger challenge than saving the planet. Tackling everything from shopaholic teens to the real differences between girls and boys, Family Tree is a groundbreaking family comedy that draws on Wilkinson\u2019s wit (and her years of close personal experience with teenagers). Wilkinson is one of contemporary America\u2019s few women cartoonists and she was the first woman to win the Pulitzer for editorial cartooning, in 1992. Wilkinson values her intensely unremarkable family life, which is marked by her interest in growing outdoor lilies, killing indoor orchids, finding an easy way to match her husband\u2019s socks and trying to figure out why Paris Hilton is famous." # ("Farcus", "http://comics.com/farcus"), - # "Take an ordinary work situation, add a pinch of satire, and let it stew. Farcus was launched by Universal Press Syndicate in 1991 and appeared in more than 250 newspapers worldwide before the creators decided to put the comic \"on hold\" as they pursued other creative projects. Coulthart is now co-founder of Funbag Animation Studios, which produces television programs such as Toad Patrol, The Mole Sisters, and For Better or for Worse. Waisglass is CEO of LaughingStock Licensing Inc., a strategic trademark licensing management firm of popular entertainment brands. David Waisglass, co-creator of FARCUS, draws on a wide range of work experience to come up with comic ideas. He was a journalist, graphic artist, union organizer, filmmaker, HR manager, and management consultant -- all before the age 30. \u201cI love learning new things,\u201d says Waisglass, but agrees that it\u2019s hard to beat cartooning. Gordon Coulthart says he always knew that someday he would be a cartoonist. In addition to developing characters and entertainment properties for television, Gordon supports two children and several local pubs. \"It\u2019s been a a lot of fun,\" say the comic duo about their partnership and working relationship. \u201cThere aren\u2019t too many jobs out there were you get paid to make each other laugh.\u201d " # ("Fat Cats Classics", "http://comics.com/fat_cats_classics"), - # "Fat Cats is about two purr-enially pretentious brothers who dominate the business world and indulge in all the finer pleasures their nine lives have to offer. In the cat-eat-dog world of the Fat Cats, running a multi-conglomerate corporation, exploiting the loyal dogs that work in their catnip factory and buying wonderfully ostentatious trinkets are all in a day's work. \"The Fat Cats are different from you and me. They have more money, true, but they're also covered with fur and have tails sticking out of their Armani suits,\" jokes Poderbarac. \"I was inspired by reading the business pages year after year and watching people like Bill Gates, and the ultimate fat cat, Donald Trump. I thought it would be fun to give characters like that feline personalities and to show how they would get along with the working class in my made-up cartoon world,\" he explains. Charlie Podrebarac was born in Kansas City, Kansas, where he began his cartooning career drawing nuns in grade school. He studied advertising journalism at the University of Kansas so that he could pursue his dream of cartooning. After college, he began work as art director for a local magazine which published his first cartoons. Poderbarac then created a humor panel called \"Cowtown,\" for the Kansas City Star (1984 to present). In between, he's produced hundreds of greeting cards for companies including Hallmark, Current, Paramount, and Gibson Greetings. His cartoons have been published in magazines such as Business Law Today, Playboy, and Veterenary Medicine, and he produces advertising art for clients including Sprint, Book of the Month Club, Mastercard and Maggiemoo's Ice Cream. His first comic strip, \"Smart Alex,\" was syndicated by The Washington Post Writers Group from 1995 to 1996. When not drawing in his knotty pine studio, Podrebarac lives the good life with his wife, Alicia, in Westwood, Kansas." # ("Ferd'nand", "http://comics.com/ferdnand"), - # "Ferd'nand is the classic \"silent\" comic strip, starring a wide-eyed cherubic mime, his wife, son and dog. Every day is a new adventure for the title character as he confronts life and fate with wonderful expressiveness. From circus performer to bank cashier to orchestra conductor, Ferd'nand has spent almost six decades as the pantomiming protagonist of middle class life. A timeless classic, Ferd'nand is one of the 10 longest-running comic strips still being drawn. Originally created in 1937 by Danish film animator Henning Dahl Mikkelsen for Presse-Illustrations-Bureau (PIB) in Copenhagen, the strip gained wide popularity in Europe, so PIB brought it to America, where United Feature Syndicate began distributing it in 1947. Mikkelsen moved to California and continued to draw the strip until his death in 1982. Today, Ferd'nand continues to be drawn in \"Mik's\" style by Henrik Rehr. Rehr was born and raised in Denmark and came to the United States in 1992. " # ("Flight Deck", "http://comics.com/flight_deck"), - # "The day-to-day provides fodder for this off-beat but true-to-life cartoon. Peter Waldner began drawing cartoons as soon as he was old enough to be trusted with a pencil. He moved on to Elmira College in Elmira, N.Y., where he focused on studio art and film making. Waldner earned his B.A. from Elmira in 1977, and went on to postgraduate studies at the Parsons School of Design and Southampton College in New York. In 1980, Waldner settled on Shelter Island, N.Y. In 1993, he became the editorial cartoonist for the Shelter Island Reporter, followed by the East Hampton Independent and the Southampton Independent. Waldner's cartoons have won awards from the New York Press Association, including the first-place prize in the Editorial Cartoon Division. When he is not painting or drawing, Waldner spends his time taking care of his teenage son and daughter." # ("Flo & Friends", "http://comics.com/flo&friends"), - # "Flo & Friends centers on Flo, a senior citizen whose life does not conform to the stereotypes about the elderly. Flo & Friends is a syndicated daily comic strip drawn by Jenny Campbell and distributed by Creators Syndicate. The comic was originally created by John Gibel in 2002. Jenny Campbell graduated from Arizona State University in 1979 with a BA in journalism, she became a sixth-generation journalist. In 1985, while working at The Orange County Register as a general assignment entertainment writer, Jenny kept doodling and ended up drawing a weekly cartoon in the Friday entertainment supplement. The cartooning bug had bitten her. Today, Jenny runs a thriving cartooning business in Chagrin Falls, Ohio, with 12 children's books to her credit and a list of clients including the textbook arms of most major publishers and Highlights for Children magazine." # ("Fort Knox", "http://comics.com/fort_knox"), - # "The tale of a military family's adventures and escapades, from a military brat's point of view. Fort Knox chronicles the life of a military family: Dad, Major Joe Knox; Mom, Jane Knox; and their two boys, Donald and Wesley. The family has picked up and moved \u2014 again \u2014 thousands of miles from family and friends to take up residence at Joe's new assignment at Fort Lincoln. Donald and Wesley have moved before, but that doesn't make it any easier on them. They must face down new bullies, master a new school system and new teachers, and navigate a new community. Added to these pressures is the distance the move puts between them and their beloved grandmother, who's a known troublemaker if not a known felon (yet). On top of all that, there's the strain that military life puts on their parents' otherwise happy marriage. Cartoonist Paul Jon is the son of an Army colonel whose tours of duty included Fort Leavenworth, Fort Jackson and Fort Knox, and who, every morning, liked to say to his fellow soldiers, \"It's a great day to be in the Army.\" Paul Jon understands his dad's attitude, and feels that being a military brat \"made me understand the sacrifices that military families make for our country, and also made me a better person for having to deal with new people all the time.\" " # ("Frank & Ernest", "http://comics.com/frank&ernest"), - # "Playful punsters with a \"frank and earnest\" attitude. For more than three decades, Frank & Ernest has continued its tradition of innovative humor that has delighted millions of readers daily. Frank & Ernest stars Frank and Ernest, playful punsters with the ability to appear as any person, place or thing in any time period. The constant element is the pair's \"frank and earnest\" iconoclastic attitude. Frank & Ernest is read by more than 25 million people every day, making it one of today's most popular comics. Creator Bob Thaves was a master of the twisted phrase and skewed outlook. A true innovator, Thaves' Frank & Ernest was the first comic panel presented in a strip format. It was the first to vary the roles of its characters and the first to use block lettering. It was also the first to use comic book-style digital coloring for the Sunday pages. Frank & Ernest was one of the first comic strips to have its own Web site, www.frankandernest.com, which has included several components including the first 3-D interactive comics based on a comic strip. Thaves, who held both bachelors and masters degrees in psychology from the University of Minnesota, began cartooning as a kid and never stopped. He created Frank & Ernest while working as a consultant in industrial psychology in California. Bob Thaves died in August, 2006 and Frank and Ernest continues to be produced by Bob's son, Tom Thaves, who had collaborated with his father on the comic strip since 1997." # ("Frazz", "http://comics.com/frazz"), - # "Frazz by Jef Mallett follows the adventures of an unexpected role model: an elementary-school janitor who's also a Renaissance man. While he's sweeping the hall, he's whistling Beethoven. Or Lyle Lovett. He paints the woodwork in the classrooms; he paints a Da Vinci on the cafeteria wall. He's a trusted authority figure who is every kid's buddy. He took the janitor's job while he was a struggling songwriter, and when he finally sold a hit song, he decided to stay on at school. Often praised for its intelligent wit, gentle spirit and effortless diversity, Frazz won a 2003 Wilbur Award from the Religion Communicators Council for excellence in communicating values and ethics. " # ("Free Range", "http://comics.com/free_range"), - # "Free Range is an is an offbeat look at the world over the ages. Bill was a winner of a cartoon contest in the Saturday Evening Post and for a couple of years was named Best Editorial Cartoonist for weeklies in the state of Kansas by the Kansas Press Association. For 20 years Bill has written humor cards for Hallmark Cards in Kansas City, winning several citations for best-selling cards in his category. He has also done the weekly editorial cartoon for the Kansas City Business Journal from 1987 to 2007, which have appeared in Best Editorial Cartoons of the Year by Pelican Publishing for each of the past 11 years. His work is also included in the Cartoon Research Library at Ohio State University. Luckily for Bill, his wife has steadfastly supported his cartooning dreams of glory 100 percent while raising three children. " # ("Geech Classics", "http://comics.com/geech_classics"), - # "Jerry Bittle's comic strip illustrates the small town existence in which everybody knows everyone else...and everyone else's business. Jerry Bittle created a peephole into small town life with his eccentrically populated strip, Geech. Where else can you find a no-account mechanic, a sarcastic barber, a cynical bartender, a foul-mouthed diner waitress and a wanna-be country music star? Bittle was raised in Wichita, Kansas. He lived with his wife and three daughters in Dallas, Texas until his death in 2003. Bittle used to say of his fans, \"I get a lot of mail from different parts of the country telling me, 'I grew up in that town, and I know those people. And all this time I thought I was the one who grew up in that town and knew those people.\" Bittle also created Shirley & Son, a warm and funny look at family life after divorce, for United Feature Syndicate. " # ("Get Fuzzy", "http://comics.com/get_fuzzy"), - # "A bitingly hilarious slice of life with a volatile cat, a gentle dog and the unwitting human they live with. Housecats are known to be aloof, but \"cat-titude\" reaches new heights in Get Fuzzy, the bitingly hilarious comic strip from cartoonist Darby Conley. Get Fuzzy is a wry portrait of single life, with pets. At the center of this warm and fuzzy romp is Rob Wilco, a single, mild-mannered ad executive and guardian of anthropomorphic scamps Bucky and Satchel. Bucky is a temperamental cat who clearly wears the pants in this eccentric household. Satchel is a gentle pooch who tries to remain neutral, but frequently ends up on the receiving end of Bucky's mischief. Together, this unlikely trio endures all the trials and tribulations of a typical family... more or less." # ("Girls & Sports", "http://comics.com/girls&sports"), - # "The intricacies of dating, relationships and sports. Justin Borus, Denver-born co-creator and co-writer of Girls & Sports, graduated from Williams College in Williamstown, Mass. Justin currently lives in Denver and will continue to spend his time investigating the intricacies of dating, relationships and sports until these great cosmic mysteries are solved. Andy Feinstein, artist, co-creator and co-writer of Girls & Sports, was also raised in Denver. He graduated from Emory University in Atlanta, where he was the editorial cartoonist and a sportswriter for The Emory Wheel while drawing and writing Girls & Sports with Justin. Andrew spends his time lining up a date for Friday night, watching lots of sporting events and tirelessly practicing his jump shot, which, like his dating skills, still needs much improvement. In their 20-plus combined years of being on the prowl for the perfect girlfriend, they have approached countless girls, been rejected more times than they can remember, gone on tons of dates, been involved in several serious relationships, and yes, have lived to tell the stories." # ("Graffiti", "http://comics.com/graffiti"), - # "Gene Mora creates Graffiti, a witty play on words with a clever, often ironic message. His love of typography and hand lettering started when he was a high school student at the School of Art and Design. He established himself as a graphic designer, working as an Art Director for several advertising agencies including BBDO and Franklin Spier. A freelance assignment with McNaught, a small, independent syndicate, introduced Mora to the world of syndication. He left his job as Art Director to establish his own service as a graphic designer working for syndication, advertising agencies and various design studios in Manhattan. Mora's proximity to syndicated features while working as an art director led to his own interest in creating a feature. He wrote \"Alexander Gate,\" a continuity strip illustrated by Frank Bolle; \"Dear Debbie,\" a lovelorn column; and, ultimately, Graffiti. The chance to use his design and lettering skills along with the opportunity to write seemed a perfect fit, and he has been producing the feature since 1969." # ("Grand Avenue", "http://comics.com/grand_avenue"), - # "A real, modern grandma who takes care of two cute but pretty rambunctious kids. Grand Avenue, the daily and Sunday comic strip by Pulitzer Prize-winning editorial cartoonist Steve Breen and 2009 Pulitzer finalist Mike Thompson, follows the antics of an energetic pair of fraternal twins being raised by their grandmother. The strip stars Kate Macfarlane, an avid sports fan who powerwalks to stay in shape. Not your typical cookie-baking granny, Grandma Kate has her hands full with this terrific twosome, who are best buddies even though their personalities clash. Gabby is an ambitious, newspaper-reading little girl who plans to become a billionaire before she's 30. Her brother Michael is a more sensitive soul who prefers riding his skateboard or performing scenes from Shakespeare to just about anything else." # ("Heathcliff", "http://comics.com/heathcliff"), # "Heathcliff, a street-smart and mischievous cat with many adventures." # ("Herb and Jamaal", "http://comics.com/herb_and_jamaal"), - # "A tribute to lasting friendships and a reflection on a life well lived. Born in Southern California in 1954, Stephen Bentley grew up in the South Central area of Los Angeles. He attended Pasadena City College and, later, Rio Hondo College, majoring in Art, English and Fire Sciences. Once in the business as a professional artist, Stephen worked for various advertising agencies, whose client list included the Los Angeles Dodgers, Wham-O Toys, the Playboy Channel and Universal Studios. After attending a high-school reunion and re-establishing an old friendship in 1998, Stephen was inspired to create the comic strip Herb and Jamaal. Today, Stephen is a single father who lives in Northern California with his teenage daughter, Natalie." # ("Herman", "http://comics.com/herman"), - # "One of the most innovative comics of all time, Herman is the groundbreaking offbeat humor panel created by Jim Unger. In 1992, after 20 years of cartooning and with more than 6,000 original comics to his credit, Unger had finally decided to retire and enjoy life in the Bahamas. But not for long: in 1997, due to popular demand, United Feature Syndicate brought back classic Herman comics with 10 years of Unger's best work. Although Unger has no plans to return to full-time cartooning, he has carefully 'updated' and revised his comic collection, and hopes to sprinkle in a few new comics from time to time. So grab onto your funny bone and get re-acquainted with Herman, one of the most hilarious comic strips ever to be syndicated in newspapers." # ("Home and Away", "http://comics.com/home_and_away"), - # "Sam and Sandy juggle careers and child care. Love, respect and got-your-back support are the trinity of their relationship. It's school-picture day and Karen has nothing clean to wear. Timmy can't find his cleats and soccer practice is in 10 minutes. Sam is working from home but his conference call is running an hour late, and Sandy is away on business. In Home and Away by Steve Sicula, Sam and Sandy Szwyk are typical parents juggling careers and child care. They find it hard enough to make sure their kids, Karen and Timmy, are where they need to be, when they need to be there (not to mention appropriately dressed). Factor in their business schedules and you've got barely managed chaos. That's why love, respect and a got-your-back support system are the trinity behind Sam and Sandy's relationship. It's what they depend upon -- at home and away." # ("It's All About You", "http://comics.com/its_all_about_you"), - # "It's really all about me. But to the extent that you can relate to it, It's All About You, too. \u201cThe strip\u2019s title is sort of a joke in itself,\u201d says cartoonist Tony Murphy. \u201cIt\u2019s really all about me. But to the extent that you can relate to it, it\u2019s all about you, too.\u201d Murphy\u2019s persona in the strip is a caffeine-craving neurotic named Michael who\u2019s in a long-term, pre-marriage relationship with his well-balanced, herbal-tea-drinking girlfriend, Gina. Michael epitomizes today\u2019s push-me-pull-you mentality in which we\u2019re obsessed with how we appear to the rest of the world, yet desperate to win acceptance strictly by being ourselves. Michael and Gina frequent a local caf\u00e9 where the barista, Chris, is the coffee-counter therapist for all his self-involved customers. Chris pretends to listen to patrons like Gina\u2019s friend Maggie, who is addicted to self-help books, and Maggie\u2019s father, Alex, who rationalizes away his failure to follow a diet or go to the gym. Michael\u2019s software-company cubicle-mate, Albert, also patronizes the caf\u00e9, when he's not being Michael\u2019s sounding board for his relationship with Gina or his laundry list of hang-ups." # ("Jane's World", "http://comics.com/janes_world"), - # "A strip for all those gals out there who are just trying to figure life out. If you're a female cartoon character, you are expected to make jokes about dating, raising children, dieting and anything else that relates to poor body image. But what if you are a female cartoon character who feels that life is too short for caloric concerns? What if you are a cartoon character who chases vampires, needs sensitivity training, requires career counseling and basically needs to get a life? Well, then you'd be Jane. Welcome to Jane's World. Where female cartoon characters are free to be goofy, flat-chested and self-absorbed. Paige Braddock graduated with a degree in Fine Art from the University of Tennessee. Paige worked as an illustrator for several newspapers, including The Chicago Tribune and The Atlanta Constitution before accepting a position as Creative Director at Charles M. Schulz Creative Associates. In this position, Paige works with Schulz family members to oversee the art direction and editorial control for all Peanuts licensed product worldwide. In 2002 Paige launched her own publishing company, Girl Twirl Comics, so that she could finally make her comic feature, Jane's World, available to comic shops and bookstores. Jane's World started as an online feature in the late 1990s but was soon picked up for online distribution by United Feature Syndicate, Inc. Currently, daily installments of Jane's World appear on their Comics.com website. In 2006 Jane's World received an Eisner Award nomination for best humor book." # ("Jump Start", "http://comics.com/jump_start"), - # "A tender, funny view of middle-class family life. One of a handful of syndicated African-American cartoonists, Robb Armstrong brings a unique perspective to his strip with art and storylines that are upbeat, fun and undeniably realistic. Jump Start offers an authentic, positive representation of middle-class African Americans. Joe and Marcy Cobb are a young African-American couple trying to balance their careers - he's a police officer, she's a nurse - with a loving marriage and warm family life shared with their young daughter, Sunny, and toddler son, Jojo. Many readers see themselves reflected in Jump Start. \"I'm thrilled that people say that,\" says Armstrong. \"I'm drawing about my life; about a black couple because I'm black. Joe and Marcy and the characters I've developed are deep and based on real life.\" A popular motivational speaker who addresses groups at schools, churches, libraries and other venues throughout the U.S., Armstrong inspires young people with the story of his own success. " # ("Kit 'N' Carlyle", "http://comics.com/kit_n_carlyle"), - # "A single woman and her mischievous kitten. Kit is a single working woman, Carlyle is her spunky, mischievous kitten and their lives together provide the humor for the daily panel Kit 'N' Carlyle, created by Larry Wright, editorial cartoonist for The Detroit News. Adorable kitten Carlyle shreds the furniture, gets into mischief with Kit's niece Carly and glares at Kit's boyfriends. Few of her dates survive under such intense scrutiny, and those who do endure home-cooked meals so awful, even Carlyle turns up his nose at them. " # ("Li'l Abner Classics", "http://comics.com/lil_abner_classics"), - # "The iconic clan of hillbillies from the impoverished town of Dogpatch, Kentucky. The star Li'l Abner is hardly \"little,\" Abner is 6-foot-3 in his stocking feet , and perpetually 19 years-old; a naive, simple-minded and sweet-natured hillbilly boy. He lives in a ramshackle log cabin with his pint-sized parents. Abner inherited his strength from his irascible Mammy, and his brains from his less-than-brainy Pappy. In Capp's satirical and often complex plots, Abner was a country bumpkin Candide - a paragon of innocence in a sardonically dark and cynical world. Written and drawn by Al Capp (1909 - 1979), the strip ran from 1934 through 1977. Please note due to recent updates to Comics.com, Lil' Abner Classics will now run with the current date displayed. The Li'l Abner Classic strips displayed here are from the archives and were originally published between 1934-1955. " # ("Liberty Meadows", "http://comics.com/liberty_meadows"), - # "Liberty Meadows relates the comedic activities of the staff and denizens of the titular animal sanctuary\/rehabilitation clinic. In 1978 Frank Cho came to United States to see what all the fuss was about. 1990-1993 attended Prince George's Community College. Drew editorial cartoons and comic strips for the bi-weekly student newspaper, The Owl. Won College Media Advisers' Best Stand-Alone Cartoon of 1992. After constant pressure from parents and relatives to go into the medical field, entered University of Maryland at Baltimore School of Nursing. Drew the daily comic strip \"Univerity2\" for three semesters for the University of Maryland student newspaper, The Diamondback. Strip developed a cult-like status with student body and faculty. Won the Best College Cartoonist of 1994 award from the Scripps Howard Foundation out of 157 college cartoonists in the nation, as well as the coveted Charles Schulz Plaque for Excellence in Cartooning. Graduated from nursing school with a bachelor of science degree, but only after being thoroughly cured from any and all desires to go into the nursing profession. Discovered by Creators Syndicate. Self-published the book \"University2 \u2013 The Angry Years!\", debuted the comic strip \"Liberty Meadows\" in newspapers across the country." # ("Little Dog Lost", "http://comics.com/little_dog_lost"), - # "Like any good adventure story, Little Dog Lost by Steve Boreman is a metaphor for broader concepts and bigger concerns. A lost little dog\u2019s picture hangs on a telephone pole, a note begging for his return, reward offered, no questions asked. But the picture was taken some time ago, the poster now faded and curled from sun and rain. The Little Dog is a long way from the home he longs for. But truth be told, for Little Dog, the adventure of the open road is addictive \u2013 fraught with exploits both humorous and heroic, filled with characters both good and bad (but always interesting), and imbued with life lessons. Like any good adventure story, Little Dog Lost by Steve Boreman is a metaphor for broader concepts and bigger concerns. It contains parables and morality plays, palatably packaged in humorous comic strip form. Jeff Smith, creator of Bone, says, \"Little Dog Lost is full of sharp, witty animals, all trying to do their best to survive in the wild...even if they have to eat one another to do it. Steve Boreman's funny and thoughtful comic strip is one of the best to come along in years!\"" # ("Lola", "http://comics.com/lola"), - # "A tell-it-like-it-is grandma who lives life out loud, Lola, is an independent woman in her late 70s, widowed and living with her son and his family. Her unique view of life is matched only by her fierce independence, wicked sense of humor and blunt, but often heart-warming honesty. Available daily and Sunday, Lola is the creation of Todd Clark. Everyone's grandma may not be as witty as Lola, a sharpshooter who's busy living life to the fullest and making sure everyone else does too. Todd Clark has been drawing for as long as he can remember, possibly a result of always carrying a copy of MAD Magazine with him as a child. Since he began cartooning full-time in 1990, Clark has contributed to a wide range of comic strips, including \"Sherman's Lagoon,\" \"Mother Goose and Grimm,\" \"Frank and Ernest\" and \"New Breed.\" His cartoons have been published in a variety of magazines, including The Saturday Evening Post, Snow Country and Diversion." # ("Luann", "http://comics.com/luann"), - # "Readers of all ages love Luann, the exciting comic strip by Greg Evans that brings to life the daily drama of being a young woman. Evans' strong characters, compelling story lines and genuine humor captivate millions of readers every day. Since it began in 1985, Luann has earned a loyal following. Teens everywhere relate to Evans' insightful humor and true-to-life characters. In all story lines, Evans holds Luann up as a fine example of the positive power cartoons can have. \"I've always felt that adolescence is a very funny time -- except when you're in it,\" says Evans. \"My aim is to touch readers' hearts as well as their funny bones.\" A proven favorite, Luann consistently ranks among the top five comic strips in reader surveys. Evans is also applauded for touching on the real issues that teens face -- from puberty and unrequited love to peer pressure, drugs and alcohol. Evans won the National Cartoonists Society's 2003 Reuben Award for Cartoonist of the Year, on his sixth nomination. Get hooked on the life of this sixteen year-old girl. " # ("Marmaduke", "http://comics.com/marmaduke"), - # "Marmaduke is America's most lovable, big, huggable Great Dane. Created by Brad Anderson, the classic comic canine has delighted newspaper readers since 1954. Marmaduke lives with the Winslow family, who, try as they might, just can't seem to get him to obey. Despite his antics, the playful pooch is top dog in the neighborhood and on the comics page, where he has endeared himself to readers in more than 20 countries. The daily panel also strikes a chord with pet owners, many of whom write to Anderson to comment on Marmaduke as if he were a real dog. Winner of the National Cartoonists Society's 1976 Reuben Award for Best Comic Panel, Anderson has also created more than two dozen Marmaduke books, which have sold more than 10 million copies worldwide. " # ("Meg! Classics", "http://comics.com/meg_classics"), - # "Meg! is a charming chronicle of a lovable little girl, and her friends and family. Meg lives for the thrill of competing on the soccer field, fights to understand her boy-crazy best friend, and never misses a chance to annoy her little brother. She loves soccer and skateboarding, enjoys art (she named her puppy Van Gogh), and expects to win the World Cup MVP and be elected President in the same year. Greg Curfman was born in Newport News, Virginia and some of his earliest memories are of lying on his parents' living room floor reading the Sunday comics while waiting to leave for church. He always wanted to be a cartoonist and he spent much of his early years -- and his free time during his freshman year at college -- in the library, reading through old collections and histories of comics. He earned his B.S. in Marketing from Christopher Newport University and his M.S. in applied science (computers) from the College of William and Mary in Williamsburg, Va. He married his best friend Diane (who was also the daughter of his dentist), and got a great job writing software for IBM. Curfman tried to satisfy his yearning for cartooning fame by doing the family Christmas cards and occasional pieces of comic art for friends and colleagues. But after a while it wasn't enough. He found he now had something that he didn't have before -- life experience. Wild, crazy life experience of raising three kids and expecting a fourth. The kind of experience that can't be made up; the kind that HAS to be lived. Now he had something to write about." # ("Minimum Security", "http://comics.com/minimum_security"), - # "A furious one-eyed bunny and his unusual friends star in America\u2019s cutest pre-post-Apocalypse comic strip. In \"Minimum Security,\" a furious one-eyed bunny and his unusual friends confront the big issues -- saving the world, avoiding foreclosure, online dating -- with everything from willful denial to high-powered explosives. The title comes from a prisoner who, after being released into general society, noted, \"I'm still not free; I'm just in minimum security.\" Stephanie McMillan was born in 1965 in Fort Lauderdale, FL, and decided at age ten to be a cartoonist. She earned a BFA in animation from Tisch School of the Arts at New York University. She has been drawing comics since 1992, and Minimum Security since 1999. Her award-winning cartoons have appeared in dozens of publications, books and comics exhibitions worldwide. Her cartoon collection, \"Attitude Presents Minimum Security,\" edited by Ted Rall, was published by NBM in 2005. Her graphic novel, \"As the World Burns: 50 Simple Things You Can Do to Stay in Denial,\" co-created with writer Derrick Jensen, was published in 2007 by Seven Stories Press." # ("Moderately Confused", "http://comics.com/moderately_confused"), - # "Laugh at the absurdities we accept as \"reality\" when award-winning editorial cartoonist Jeff Stahler creates Moderately Confused, a whimsical slice-of-life comic. Editorial cartoonist for The Columbus Dispatch, Stahler also draws political cartoons that are distributed worldwide by Newspaper Enterprise Association. \"Moderately Confused is an extension of my daily thinking routine,\" says Stahler. \"I'm used to observing the front pages of the news and commenting with a cartoon. But every day, the rest of the paper tracks the culture, and all of those stories are rich for commentary, too. This panel gives me an outlet for observing those back pages of the paper that I enjoy reading as well.\" Stahler's cartoons appear every week in USA Today and are frequently reprinted in major magazines and newspapers, including Newsweek and The New York Times." # ("Momma", "http://comics.com/momma"), - # "Follow the stories of Momma, everyone\u2019s mother. Mell Lazarus is an award-winning cartoonist and a leader in his profession, having created the strips MOMMA and MISS PEACH and served as president of the National Cartoonists Society from 1989 to 1993. MOMMA was created in 1970 and distributed by Publishers-Hall Syndicate, now known as North America Syndicate. MOMMA, which currently appears in more than 400 newspapers worldwide, is based partly on Mell\u2019s mother, Frances. Lazarus points out that MOMMA reflects everyone\u2019s mother. A native of Brooklyn, Lazarus has lived in Los Angeles since the 1970s. He has three daughters." # ("Monty", "http://comics.com/monty"), - # "This award-winning, quirky comic strip created by Jim Meddick spoofs suburbia, trashes tacky TV shows and offers absurdist commentary on everything from hosing down spider monkeys to the latest conspiracy theory. Monty's skewed sensibilities have earned the strip a fanatical following on the Web and on newspaper comics pages on six continents, making this daily and Sunday comic strip a cult favorite among comics readers worldwide. Monty won the 2008 National Cartoonists Society\u2019s Award for Best Newspaper Strip. Formerly titled \"Robotman,\" Monty lampoons a wide range of topics. Explains Meddick, \"I've tried to create the comic strip equivalent of 'Monty Python's Flying Circus.' The name 'Monty' is a nod to the influence that show had on my humor. In my cartoon, just about anything can happen - this way, the ideas and characters always stay fresh.\" Monty Montahue is often at the center of this hilariously funny comic strip's outrageous story lines. A brainy, bumbling bachelor who's unlucky in work and in love, Monty shares his home with Fleshy, a hairless cat, and Mr. Pi, a super-logical extraterrestrial. The wacky cast of characters is rounded out by Moondog, Monty's beer-guzzling buddy; Loco Ohno, Monty's crazy ex-girlfriend; and Pilsner the parrot." # ("Motley Classics", "http://comics.com/motley_classics"), - # "Motley is a smart, independent cat, who is a \"connoisseur of fine milk\" and pretty much does whatever he wants - including everything from ignoring his owners to running for the occasional political office. Larry Wright has been a cartoonist since the age of 10, drawing comic books for his friends in Detroit, then creating cartoons for his Allen Park, Mich., school newspaper. After graduating from high school, Wright expanded his cartooning skills in the Army. He studied Chinese, was sent to Okinawa as an interpreter and began drawing a strip called \"Uncle Milton\" for the Okinawa Morning Star. When Wright was discharged, he remained in Okinawa to become night editor of the Star. In 1965 he took a job at the copy desk of The Detroit Free Press, and 11 years later became a daily cartoonist at The Detroit News. He created his first syndicated comic, \"Wright Angles,\" for United Feature Syndicate in 1977. Although the strip is no longer syndicated, the popularity of one of the characters, a cat, provided the inspiration for Kit 'N' Carlyle. In 1987, Wright was named associate editor of the editorial page-graphics at The Detroit News and is currently Assistant Graphics Editor. He was elected president of the Association of American Editorial Cartoonists (AAEC) in September, 1994 and will serve as President of the organization in 1996. He lives in Allen Park, Mich. with his wife Naoko. They have a son, a daughter and one grandchild. " # ("Nancy", "http://comics.com/nancy"), - # "One of the best-loved comic characters of all time, famous for gentle humor and childlike innocence. Created by Ernie Bushmiller in the 1930s, since 1995, the strip has been drawn and written in Bushmiller's classic style by Guy and Brad Gilchrist, the award-winning cartooning team behind \"The Muppets Comic Strip.\" Nancy is famed for its gentle humor and surrealistic sight gags. Nancy's childlike innocence never wavers, no matter what is happening in the world around her. She remains a devoted friend to her pal Sluggo, and can be, depending on the situation, a conceited prima donna or a fun-loving, cute and cheeky little girl. Nancy first made her appearance in the comics in the early 1930s, as a character in \"Fritzi Ritz.\" The little girl with the big red bow became so popular that in 1938, the strip was renamed \"Nancy.\" Nancy has entertained hundreds of millions of comics fans worldwide for decades. Nancy and Sluggo even appeared on a U.S. postage stamp in 1995. " # ("Natural Selection", "http://comics.com/natural_selection"), - # "Natural Selection a single-panel, surreal, intelligent, gag cartoon that had the look and feel of an editorial cartoon. Russ Wallace was born into a family of lobstermen in a small Iowa fishing village. Russ was never satisfied with the fishing life. Instead, his idols were the great MAD Magazine artists Mort Drucker and Jack Davis, as well as a host of editorial cartoonists. He painstakingly studied their work while trying to develop a style of his own. Wallace studied at Marshall University and the University of Virginia, eventually emerging with a medical degree. He practiced neurosurgery until he came to his senses and realized that medicine would always involve getting up really early and having to talk to people. With this epiphany he proceeded to illustrate a book written by his father, who then encouraged him to try his hand at editorial cartooning. He became the editorial cartoonist for the Charleston Gazette and was the runner-up to the prestigious Scripps-Howard National Press Award in his first year of cartooning. From this Natural Selection was born. Russ Wallace resides in the Southeast. He has been joined for the last 15 years by a female human who \"appears to be in charge.\" Later, two smaller humans and a dog showed up. They frequently ask to be driven places and eat a lot." # ("Nest Heads", "http://comics.com/nest_heads"), - # "With an extended family that spans nearly a century Allen is able to draw on a rich source of family humor for Nestheads. With four brothers and sisters in various stages of coping with their own empty nest, and an extended family that spans nearly a century - from 93-year-old father L.C. to infant grandniece Katie - Allen is able to draw on a rich source of family humor without having to actually put it through college. Allen, raised in Colonial Williamsburg and currently living in the birthplace of Thomas Jefferson, Charlottesville, Virginia, has decided that the best part of history is that it makes him feel young in comparison. He is aided in this pursuit by caring for his elderly cat, Caprice, and seeing his brothers and sisters at every opportunity. " # ("Off The Mark", "http://comics.com/off_the_mark"), - # "A world of scheming pets, evil computers and talking plants that puts an ironic, absurd or just plain silly spin on the ordinary occurrences of everyday life. Mark Parisi's comic panel Off the Mark hits a bull's eye with slightly skewed humor and a twisted look at the little things we take for granted. It is a world of scheming pets, evil computers and talking plants that puts an ironic, absurd or just plain silly spin on the ordinary occurrences of everyday life. Described by one newspaper editor as \"sweet-natured and devilish at the same time,\" off the mark receives fan mail from readers of all ages. It has twice been nominated for \"Best Newspaper Comic Panel\" by the National Cartoonists Society." # ("On a Claire Day", "http://comics.com/on_a_claire_day"), - # "An \"adult\" life where you're supposed to know the answers, but you discover, almost daily, that you don't know as much as you thought you did. Carla Ventresca and Henry Beckett started On A Claire Day when they felt there weren't any comic strips addressing the life they and so many of their friends seemed to be living: an \"adult\" life where you're supposed to know the answers, but you discover, almost daily, that you don't know as much as you thought you did. Where, in fact, you discover that your parents and schools taught you very little of what you need to know to make it in the real world. Carla Ventresca is a graduate of Syracuse University where she majored in Communications. She later moved to Boston and started a greeting card line. It grew big enough to capture the attention of Recycled Paper Greetings, the nation's third largest publisher. Carla is now one of their top artists, selling millions of cards each year, She currently lives in Nashville, Tenn., where she co-creates \"On A Claire Day\" with her husband and best friend, Henry Beckett. Henry Beckett managed to sneak in the back door to Harvard University. He attended UCLA Law School, where he thought law was cool but lawyers weren't. He went and got an MBA, so he could manage all the money he didn't have. Now, he co-creates \"On A Claire Day\" and composes and produces music for lots of clients, including Miramax, Vivendi Universal and Nike." # ("One Big Happy Classics", "http://comics.com/one_big_happy_classics"), - # "The daily adventures of six-year-old Ruthie, along with her family, friends and neighbors. The strip also features her eight-year-old brother Joe, their parents Frank and Ellen, and their grandparents Nick and Rose, who live next door. The strip's title is a takeoff on the phrase, \"One big happy family.\" It debuted on September 11, 1988. The strip takes place in or around Baltimore, Md., where the creator grew up. Joe describes his family as being \"half Italian and half Texan.\" The Italian half comes from Nick, Rose, and Frank. Their family name is Lombard, a slightly Americanized version of the Italian family name Lombardo. Myrna and Ellen supply the Texan side. All the family members are colorful characters with strong opinions on everything. The same can be said for their neighbors." # ("Over the Hedge", "http://comics.com/over_the_hedge"), - # "A freshly skewed look at suburban living from the perspective of the animals that lived there first. Created by Michael Fry and T Lewis, Over the Hedge takes a freshly skewed look at suburban living from the perspective of the animals that lived there first. The strip stars RJ, a mischievous raccoon, and Verne, his sensitive best-buddy turtle. Together they fight to save their wooded wonderland from the evils of encroaching suburbia but end up becoming distracted by wide-screen TVs, discarded fast food containers and the fun of wreaking havoc on the local homeowners' association. Over the Hedge has delighted comics readers since 1995 with furry antics of all kinds. Over the Hedge hit the silver screen in May 2006, and was a major hit with audiences around the globe. The DreamWorks computer-animated feature film raked in $335 million at the box office worldwide, and DVD sales continue to mount. The first-rate voice cast includes Bruce Willis as RJ and Garry Shandling as Verne. Wanda Sykes, Avril Lavigne, Steve Carell, Eugene Levy and William Shatner also lend their distinctive pipes to the popular woodland creatures." # ("PC and Pixel", "http://comics.com/pc_and_pixel"), - # "PC O'Data achieved middle age only to be \"downsized\" out of his job and his marriage. Like so many cast out by today's economy, he becomes a free-lance consultant with an office at home. He is available for hire by any PR firm, because advertising is what he used to do, but will accept almost any kind of work to make ends meet. PC is wired, but with technology always changing, is never quite as comfortable surfing the Net as his cat Pixel. An addicted Netsurfer who is never without her laptop. Pixel has a secret friend Digit, a mouse who hangs around PC's apartment and likes to dispense advice over the Internet." # ("Peanuts", "http://comics.com/peanuts"), - # "PEANUTS is the most beloved comic strip in history. What began in the funny pages in 1950 has developed into an enduring classic. Whether you\u2019re a fussbudget like Lucy, philosopher like Linus, Flying Ace like Snoopy, or a lovable loser like Charlie Brown, there is something to touch your heart or make you laugh in PEANUTS. " # ("Pearls Before Swine", "http://comics.com/pearls_before_swine"), - # "At its heart, Pearls Before Swine is the comic strip tale of two friends: a megalomaniacal Rat who thinks he knows it all and a slow-witted Pig who doesn't know any better. These two take center stage in Pearls Before Swine, a quirky strip by litigator Stephan Pastis. Together, this pair offers caustic commentary on humanity's quest for the unattainable. Launched in 2002, the strip has twice won the National Cartoonists Society's Reuben division award for Best Newspaper Comic Strip \u2013 in 2004 and in 2007. Available on United Media's comics.com Web site since 2000, Pearls Before Swine has a growing list of fans, including Dilbert cartoonist Scott Adams who says Pearls is \"one of the few comics that make me laugh out loud.\" Pastis never had any formal training, but he did draw cartoons for each of his school newspapers as he grew up. He holds a degree in political science from the University of California at Berkeley. Although he always wanted to be a cartoonist, Pastis realized that the odds of syndication were slim, so he went to UCLA Law School and became an attorney instead. While at UCLA, he drew a popular strip called \"Rosen.\" It was while was hopelessly bored in a class on the European Economic Community that Pastis first drew \"Rat,\" a character that would reappear in every comic strip he created thereafter - including Pearls Before Swine." # ("Pickles", "http://comics.com/pickles"), - # "Married for 50 years, Earl and Opal appreciate know-me-better-than-I-know-myself honesty and good-natured ribbing. Pickles is a laugh-out-loud comic strip gem, showing the funny side of family and friendships. Earl and Opal share their golden years with their 30-something daughter Sylvia, her husband, Dan and their beloved grandson Nelson. Whether observing the differences between genders and generations or taking a wry but sympathetic look at life in the twilight years, Crane\u2019s good-natured wit and dry humor are sure to please readers of all ages. Pickles has topped comics polls across the nation again and again, and it appears in 500 newspapers around the world. Crane was born in Twin Falls, Idaho, but grew up in the San Francisco Bay area. He graduated with a degree in art from Brigham Young University in 1973. Soon after Pickles\u2019 debut in 1990, Crane \u201cretired\u201d as an art director for an advertising agency in Reno, Nevada, to devote his full attention to his comic strip. Although he often used cartoon figures in ads he designed, Pickles is his first syndicated comic strip." # ("Prickly City", "http://comics.com/prickly_city"), - # "Carmen and Winslow are friends to the end, although they disagree on just about everything. The unlikely friendship between a coyote pup and a young girl takes center stage in Prickly City. This topical comic strip centers around Carmen, a feisty libertarian-conservative, and Winslow, an impulsive coyote with political aspirations. Winslow can be patronizing and condescending, and his liberal responses produce much of the strip\u2019s humor. Carmen is continuously frustrated by Winslow\u2019s assumption that she should be a liberal feminist. Through it all, though, Carmen and Winslow are friends. Prickly City is created by Scott Stantis, the editorial cartoonist for the Chicago Tribune. " # ("Raising Duncan Classics", "http://comics.com/raising_duncan_classics"), - # "Raising Duncan by Chris Browne celebrates the furry, four-legged creatures that are the center of many families' lives. Raising Duncan appears in 50 newspapers worldwide, including the Denver Rocky Mountain News, Atlanta Journal and Constitution, Chicago Sun-Times, Detroit Free Press and Minneapolis Star and Tribune. It is also available on the Web at www.comics.com. Raising Duncan follows the antics of Big Daddy Kelly, an easily distracted romance novelist suffering from writer's block. His wife, Adelle, is an organized mystery writer who shares his antique writing desk and his unabashed love for Duncan, a little black Scotty dog who is the heart of their household. A wide-eyed innocent who marvels at the world and asks endless questions, Duncan is loved by everyone - even the cat. Chris Browne, an accomplished comic artist who grew up in Wilton, Connecticut. His father was cartoonist Dik Browne, creator of Hagar the Horrible. As a teenager, Browne assisted his father on his comic strips and continued to work with him until he passed away in 1989. During this time Browne also drew cartoons for the National Lampoon, where editor Sean Kelly dubbed him the magazine's \"Token Good Taste Cartoonist.\" He went on to sell cartoons to Esquire, Heavy Metal, Playboy and The New Yorker. Raising Duncan is inspired by Browne's love for his wife, Carroll, and for their 11 year-old Scottish Terrier, MacDuff. \"There has been a trend in the comics lately towards cynicism,\" says Browne. \"Raising Duncan runs like the wind in the other direction. It's all about love, family, understanding and acceptance - the warm places we find for each other in a cold world.\" Like the characters he has created, Browne lives and works in Sarasota, Florida. When not working on Raising Duncan or waiting for his muse to inspire, Browne can be found prowling local bookstores, quaffing cappuccinos and walking the dog." # ("Reality Check", "http://comics.com/reality_check"), - # "A wacky vision of the world that exposes the hidden hilarity in ordinary circumstances. Cartoonist Dave Whamond offers an offbeat view of the world in Reality Check, his daily and Sunday comic panel that exposes the hidden hilarity in everyday situations. A thoroughly wacky look at life, Whamond explains, \"I just frame some of the silliness of everyday life in the comic and invite people to take a double-take -- to look at life from another angle. Reality Check is more a state of mind than anything else. The characters could be people you know -- maybe even a bit of yourself -- but the names have been changed to protect the innocent.\" Whamond was born in Edmonton, Alberta and grew up in the small northern Canadian town of Whitecourt where, he says, \"there was nothing to do but draw cartoons.\" He discovered doodling at an early age, practiced through many math classes and attended the Alberta College of Art, where he studied visual communications and discovered his true passion -- cartooning and illustration. Whamond freelanced at The Calgary Herald as an editorial cartoonist, sharing duties with the paper's staff cartoonist and publishing three cartoons a week while still in college. He honed his skills at the Herald for five years before devoting himself full-time to freelance illustration for magazines. Whamond's illustrations have been published in Sports Illustrated, National Geographic World, Financial Times, Owl Magazine, Psychology Today and T.V. Times, among others. He also illustrates a monthly feature for Sesame Street magazine." # ("Red & Rover", "http://comics.com/red&rover"), - # "Step into a time when your best friend has four legs and drools, loyalty is unquestioned and friendship is forever. Red and Rover, A 10-year-old with dreams of going into space one day. Red loves baseball and model rocketry, but most of all his dog, Rover, whom he considers his best friend, confidant, and guardian angel. Rover, a mutt with mostly Lab in him. Rover is cool, calm and collected--unless a squirrel is within earshot--and unfalteringly loyal to Red, who not only found him a home, but found his tickle spot. Brian Basset was born in Norwalk, Conn., in 1957 but grew up in the Washington, D.C., suburb of McLean, Va. In 1975, Brian enrolled at Ohio State University where he lampooned state and student politics as a political cartoonist for the school paper, The Lantern. Three years later Brian landed a six-month \"tryout\" as editorial cartoonist for The Seattle Times. This \"tryout\" lasted 16 years. In 1994, he began to devote himself full-time to his comic strip, \u201cAdam\u201d (now called \u201cAdam@Home\u201d) which he had developed a decade earlier with Universal Press Syndicate. A big believer in space exploration, Basset was honored in 2004 with a one-man show of his Red and Rover space-themed strips at NASA's Washington, DC headquarters. He is the first and only comic strip cartoonist so recognized. On July 26, 2005, an original drawing by Basset commemorating America's return to flight lifted off launch pad 39B along with the crew of the space shuttle Discovery for a near flawless 13-day mission. Brian Basset is married and the father of two boys." # ("Rip Haywire", "http://comics.com/rip_haywire"), - # "The Adventure Comic Strip is Back -- With a Twist -- in \u201cRip Haywire\u201d. Rip Haywire is a soldier of fortune, a contemporary adventure hero in the classic mold: a brave, square-jawed man of honor who lives for danger. He\u2019s also a bit of a lug. Accompanied on random adventures by his cowardly dog TNT and his venomous ex-girlfriend Cobra, Rip tracks down lost treasure, takes down madmen and takes on any job that promises heart-pounding action, peril and intrigue! And, of course, cash. For Rip Haywire and his pals, every adventure can turn into a surf-and-turf platter of nonstop trouble -- or it can just deal with the everyday hazards of a life lived to the max. Rip Haywire is an action-packed, silly send-up of the adventure comic strip that takes readers on a roller-coaster ride across the globe and shows how even studly mercenaries get yelled at by their mothers. " # ("Ripley's Believe It or Not!", "http://comics.com/ripleys_believe_it_or_not"), - # "Fascinating illustrated facts from around the world. Ripley's Believe it or Not!, one of the longest-running comic panels in history, continues to fascinate comics readers with unbelievable facts from around the world. Currently illustrated by John Graziano, these fascinating panels are read every day in nearly 40 countries. The panel gives readers a view of the unusual that earned originator Robert Ripley his fame. Ripley's has developed a worldwide following since Robert Ripley's first Believe it or Not! cartoon appeared in The New York Globe in 1918. Over the next decade, the panel established a tradition of bringing phenomenal events to local newspapers. Ripley traveled all over the world to find the strange tidbits for his Believe It or Not! books and comic strip. He continued to do the strip until he died in 1949. The panel was later drawn by Walter Frem, and then by Don Wimmer. Current illustrator Graziano has been working as an artist and illustrator since 1983, when he received a certificate in illustration from the Newark School of Fine and Industrial Arts. He has designed trading card sets and a portrait series based on the 1960s cult TV show \"Dark Shadows.\" Graziano has also created comic strips for Scream Queens magazine, designed t-shirts graphics and created storyboards and concept drawings for Hollywood films." # ("Rose Is Rose", "http://comics.com/rose_is_rose"), - # "In a melting pot of fantasy and reality, Rose is Rose presents the extraordinary nature of everyday life as seen through the eyes of the Gumbo family. Rose is Rose and creator Pat Brady have received many accolades, including the highest honor in the industry -- the National Cartoonists Society's Reuben Award for Outstanding Cartoonist of the Year (2004). Brady has also received the prestigious Wilbur Award from the Religious Public Relations Council. The strip stars child-at-heart Rose and her ASD (Attentiveness Surplus Disorder) husband Jimbo. Their gentle son Pasquale is watched over by his Guardian Angel who morphs from tiny cherub into gargantuan protector. Family kitten Peekaboo boasts that her humans are the cutest in town. Readers relish the romance in Rose and Jimbo's marriage, yet cheer the emergence of Rose's rebel alter ego, the fearless, wild and ready-to-roll Vicki the Biker. " # ("Rubes", "http://comics.com/rubes"), - # "Rubes, a single panel cartoon inspired by a collection of greeting cards. Maybe you could call Leigh Rubin a sit-down comedian. But whatever you call him, he\u2019s just gratified to have the opportunity to make other people laugh. With his cartoon panel, Rubes, in hundreds of newspapers across the country and gracing millions of greeting cards, mugs and T-shirts, Rubin has plenty of opportunities. In addition to drawing Rubes, Leigh also enjoys a busy schedule giving thought provoking and entertaining cartooning workshops and presentations for schools as well as professional organizations all around the country. Leigh is married and has three sons." # ("Rudy Park", "http://comics.com/rudy_park"), - # "Rudy Park is the story of a modern family connected not by blood, but by something much more powerful: caffeine. These friends, misfits and latte addicts - like many Americans in search of connection - find their sense of community at a cafe. A smart, contemporary satire Rudy Park is drawn by Darrin Bell and written by Theron Heir. At the center of the strip is Rudy Park, a 20-something cafe manager and archetypal Generation X-er. Among the regulars at Rudy's workplace, the House of Java, is his arch-nemesis, Sadie Cohen, an octogenarian with an attitude. Other central characters include Rudy's boss, Armstrong Maynard, a cheap capitalist; Rudy's Uncle Mort, a raving liberal lunatic; Randy \"The Rock\" Taylor, a former football star; and Darlene Desai, a workaholic and Rudy's unrequited love. The House of Java is a both hangout for the strip's characters and a forum for contemporary issues. The strip is peppered with cameo appearances by a variety of newsmakers, from politicians to pop stars. Theron Heir is the pen name for Matt Richtel, a journalist who writes for The New York Times." # ("Scary Gary", "http://comics.com/scary_gary"), - # "After 700 years of relentless vampirism, Gary's ready to retire his fangs, gather up his henchman and retire to a sleepy suburban neighborhood. A laid-back prince of darkness, Gary has always felt he's a suburbanite trapped in a vampire's body. So after 700 years of relentless vampirism, he retires his fangs, gathers up his henchman and retires to a sleepy suburban neighborhood. Swapping blood for deck, Gary wants nothing more than to quietly blend into the suburban landscape. Not an easy task when your nefarious and defiant henchman is terrorizing the neighbors. " # ("Shirley and Son Classics", "http://comics.com/shirley_and_son_classics"), - # "Shirley and Son, a loving blend of reality and humor reflecting the lives many people are living today. Shirley and Son stars an eight-year-old boy, Louis, whose parents are divorced but are both very involved in raising their son. Like many children of divorced parents, Louis wishes that Shirley and Roger would get back together but they are doing the best they can to get on with their lives. As Bittle explained the strip, \"Shirley and Roger are nice people and things just didn't work out for them in their personal lives. We've all had relationships that didn't work out and we pick up the pieces and get on with it. I think a lot of people will relate to the love in this comic strip. Even when things don't go the way we planned, we still go on.\" Bittle grew up in Wichita, Kansas. He lived with his wife and three daughters in Dallas, Texas, until his death in 2003. Bittle also created the comic strip Geech, a humorous look at life in a small town, also distributed by United Feature Syndicate. Both Geech and Shirley and Son display the cartoonist's unique ability to combine humor with keen, realistic and insightful observations about everyday life." # ("Soup To Nutz", "http://comics.com/soup_to_nutz"), - # "Sibling rivalry reigns in this funny family farce. The Nutz family is definitely not the Cleavers, the Waltons or the Bradys. But you'll undoubtedly recognize them anyway. Most likely, they're a lot like the family you grew up in... where the battle for the last chicken leg is comparable to the Battle of Bull Run, sibling rivalry is putting it mildly, and family values usually refers to a coupon book. Soup to Nutz by Rick Stromoski stars hard-working Roy Nutz, his loving wife Pat, and their battling brood - sons Roy-boy and Andrew, daughter Babs and rambunctious dog Rosco. Stromoski is the seventh in a family of 12 children. Growing up in such a large family has given him an especially developed sense of humor that he has expressed through drawing from the moment he could pick up a pencil. A self-taught cartoonist and humorous illustrator, his work has appeared in national magazines, children's and humor books, newspapers, licensed products, national advertising and network television. Stromoski's greeting cards have become best-sellers for several major companies. " # ("Speed Bump", "http://comics.com/speed_bump"), - # "If life were a movie, these would be the outtakes. Speed Bump appear in over 200 newspapers internationally. In May 2000, the first \"Speed Bump\" book was published, Speed Bump: A Collection of Cartoon Skidmarks (Andrews McMeel). More recent books include Speed Bump: Cartoons for Idea People (2004, ECW Press), which was named Humor Book of the Year by Foreword Magazine, and Just One %$#@ Speed Bump After Another\u2026 (2005, ECW Press). In addition, American Greetings has carried a best-selling line of \"Speed Bump\" calendars and greeting cards, which won a \"Retail Excellence\" award in 2000. Coverly grew up in Plainwell, Michigan, and began taking cartooning seriously in 1986 as an undergraduate student at Eastern Michigan University. He continued his cartooning in graduate school at Indiana University, where his panel won numerous national awards; he was graduated from IU with a master's in creative writing in 1992. In 1994, Creators Syndicate picked up his untitled cartoon panel, helped choose the name \"Speed Bump,\" and a year later, it was running in nearly 100 papers. In 1995 and in 2003, \"Speed Bump\" was given the Best in Newspaper Panels award by the National Cartoonists Society, an honor for which it was also nominated again in 1997, 2001, and 2002. In 1998, the same organization gave him another award for Best Greeting Cards, which were nominated again in 1999. In both 2004 and 2005, Coverly was nominated by the NCS for the prestigious Reuben Award, given to the Outstanding Cartoonist of the Year." # ("Spot The Frog", "http://comics.com/spot_the_frog"), - # "The sweetly funny, beautifully drawn world of a lovable little frog and the two-legged mammals who fascinate him. In Spot the Frog, readers learn what Spot already knows: that life is a glass that's always half full. And, if you're a small green frog, that's just the right size for a dip. Spot is an exuberant frog who sometimes doesn't see things for what they really are. For him, a sink full of dirty dishes is a pond to splash in, and a lamp is something to bask under. Karl, Spot's human friend, is a laid-back guy. He goes with the flow, even when the flow is a frog at the door with a suitcase. He looks out for Spot in a grandfatherly way. He's thoughtful and accepting - you'd have to be to welcome a frog into your home. \"Many of today's comic strips feature edgy characters,\" says Heath. \"Spot the Frog is gentler, more whimsical, with a sense of the fantastic. It's about innocence and wisdom and the complete appreciation of what you have. I want readers to learn about Spot, just as Karl does. Every year should bring something new. And every week should bring something unexpected.\" Mark Heath was born 1960 in New Hampshire. Heath attended the University of New Hampshire for a few semesters, long enough to know that high school would be the peak of his academic career. He wanted to be a writer, not a teacher, so he quit school and worked for the next eight years at an assortment of jobs, writing stories at night and every weekend. He sold his first cartoon in the early 1980s to Wildbird Magazine. He sold his second cartoon several years later to Writer's Digest. Since then, his pace has improved. Heath is a freelance cartoonist and an occasional writer of science fiction. His work has appeared in publications including Reader's Digest, First For Women, Women's World, Pirate Writings, Strange Horizons, American Scientist, Asimov's and The Magazine of Fantasy & Science Fiction. He has designed animated greeting cards for Amazon.com and print cards for Marcel Schurman Fine Arts, Recycled Paper Greetings and Renaissance Greetings. He is the author of Drawing Cartoons (North Light Books, 1998). One of his favorite hobbies is playing the trumpet. Heath currently lives in Rhode Island.h" # ("State of the Union", "http://comics.com/state_of_the_union"), - # "Through political cartooning, Moore perfected the combination of political satire, caricatures and humor that are on display in State of the Union. For Carl Moore, a self-described \"fallen liberal,\" his journey to becoming a cartoonist has taken a few strange turns. The cartoonist was once a radical socialist majoring in English literature at the University of California at Berkeley in the early '60s. After watching some fellow socialists throw bricks at police during a 1968 demonstration, however, Moore began to rethink his political leanings. Once he received his degree from design school in 1989, Moore became a freelance editorial cartoonist, publishing his work in newspapers such as the Long Beach Press-Telegram and the San Diego Union-Tribune. He also began drawing cartoons that appeared regularly in the National Review. " # ("Strange Brew", "http://comics.com/strange_brew"), - # "With the creation of \"Strange Brew,\" Deering now has an outlet for his creative sense of humor and quirky view of life. \"Being an editorial cartoonist today, you have to be tuned-in to pop culture as well as politics -- but there are some limits to what you can do,\" Deering says \"In Strange Brew, everything's fair game. I get to cut loose and draw anything.\" As an editorial cartoonist, Deering has received numerous honors. Winner of the National Press Foundation's 1997 Berryman Award, Deering also gained top honors in the 1994 national John Fischetti Cartoon Competition and was the seven-time winner of the Arkansas Press Association's Best Editorial Cartoonist award. Born in Little Rock in 1956, Deering has been drawing since his childhood fascination with science fiction and dinosaurs -- subjects he made into comic books. After studying art with Truman Alston, Deering focused on commercial and fine at the University of Arkansas. At the Democrat-Gazette, Deering advanced from layout artist to editorial cartoonist in 1981-82. His promotion to chief editorial cartoonist in 1988 made his cartoons the state's best-known. " # ("Tarzan Classics", "http://comics.com/tarzan_classics"), - # "The famous jungle man and legendary hero created by Edgar Rice Burroughs. Tarzan is one of the most widely known characters in modern fiction, having appeared in books, in movies and on television. A legendary hero, Tarzan enjoys the distinction of starring in the first adventure comic strip, the first continuity strip and the first strip to appeal to generation after generation for more than seven decades. Disney's full-length animated Tarzan feature was released with great success in 1999, marking the 48th film adaptation of the loincloth legend. Tarzan is popular in more than 50 countries around the world. Tarzan originated in Burroughs' 1912 short story \"Tarzan of the Apes.\" Several books followed, and in 1929, the Lord of the Jungle made his first appearance in a daily comic strip. In 1930, United Feature Syndicate took over the syndication of Tarzan, launching the first Sunday comic in 1931. UFS continues to syndicate classic Tarzan daily and Sunday strips. TARZAN TM owned by Edgar Rice Burroughs, Inc. and Used by Permission. Copyright (c) Edgar Rice Burroughs, Inc.. All Rights Reserved." # ("That's Life", "http://comics.com/thats_life"), - # "This quick-witted, wry and intelligent comic about modern society is appreciated by all of us who must live life on its own terms. \"Life happens,\" explains The Washington Post Writers Group. \"Thankfully, when it does, there's always another way of looking at things." # ("The Barn", "http://comics.com/the_barn"), - # "Where sarcastic cows evade maniacal butchers, cute sheep befriend cranky goats and veterinarians try to control the chaos. This adorable comic strip follows the lives of barnyard animals Stan the bull, Rory the sheep, Jim the pig and more as they evade the butcher\u2019s knife and the chef's menu with the help of their veterinarian friends Brenda and Harold. Will Stan ever win the heart of the newly-arrived cow, Juanita? Can Doug the goat accept the friendly advances of sweet sheep, Rory? Or will Chef Rene triumph and expand his menu to include the cuddly denizens of The Barn? " # ("The Born Loser", "http://comics.com/the_born_loser"), - # "Lovable loser Brutus Thornapple can't get a break, on the job, at home, or anywhere. Chip Sansom began preparing to become The Born Loser at the age of 14 when his father, the late Art Sansom, first created The Born Loser comic strip. That was 1965. After years of observing and assisting his father, Chip is now in the role he was destined for - cartoonist for The Born Loser. A classic comic strip, it is a favorite with readers in all demographic groups, consistently finishing at the top of comic surveys. The Born Loser began as a strip with no central characters that revolved around the loser theme. Gradually, it developed into the comic we see today, starring lovable loser Brutus Thornapple, his wife Gladys, mother-in-law Ramona Gargle, boss Rancid Veeblefester, dim-witted son Wilberforce and the mischievous neighbor Hurricane Hattie O'Hara. " # ("The Buckets", "http://comics.com/the_buckets"), - # "A frenetically funny snapshot of modern family life: the worries, the mayhem and the often-overlooked rewards. The Buckets is written and illustrated by Greg Cravens and offers a realistic snapshot of modern family life: the worries, the mayhem and the often-overlooked rewards. Examining everyday chaos with a healthy sense of humor, it strikes a chord with parents who juggle the many demands and the mild insanity of raising a family today. Cravens graduated from the University of Memphis in 1987. He met original Buckets creator Scott Stantis while still in college and later called him up with questions about becoming a cartoonist. When, years and years later, Stantis decided to concentrate on writing The Buckets, Cravens was quick to point out that he could mimic Stantis' art style. They began collaborating in 2001, and Cravens took over the strip completely in 2006. In addition to The Buckets, Cravens draws editorial illustrations for various papers, advertising cartoons for a broad range of corporate clients and children's activity books for restaurants, hospitals and businesses. " # ("The Dinette Set", "http://comics.com/the_dinette_set"), - # "A lively hustle and bustle of people who truly enjoy every moment of belonging to the masses. Mass consumerism is exciting and colorful!" # ("The Grizzwells", "http://comics.com/the_grizzwells"), - # "This family of grizzlies is the comic strip with bite. Created by Bill Schorr, The Grizzwells features a four-bear family of grizzlies. Schorr's quick wit, penchant for puns and razor-sharp observations make for a roller-coaster ride of laughs. For a family strip with bite, you can't do better than The Grizzwells. Edgy, bright and quick, Schorr's writing is refreshing. The loose pen strokes of his illustrations are of the caliber that was once considered standard fare on the comics page. Schorr admits The Grizzwells is loosely based on his own family life - with a twist. For example, like many husbands and wives, Gunther and Flora argue about taking out the garbage. But Flora also complains about her husband eating the garbage! " # ("The Humble Stumble", "http://comics.com/the_humble_stumble"), - # "Therapy for the sometimes overwhelming challenges of being both mom and dad. The Humble Stumble was born in late 2000 when Roy Schneider suddenly found himself in the unfamiliar and scary position of being fully responsible for the upbringing of his then-9-year-old daughter. Schneider originally created the comic as therapy, as the sometimes overwhelming new challenges of being both Mom and Dad often left Roy with no choice but to laugh at himself while attempting unfamiliar domestic tasks (for example, \"stumbling\" back and forth through the grocery store for an hour and a half to find six items). Roy Schneider has been a professional cartoonist since 1992. His work has been published in magazines, greeting cards, card games and other media, but his goal from the start has been to have a syndicated daily comic strip; probably the result of learning to read from stacks of Peanuts and Dennis the Menace paperbacks as a very young child. In addition to Charles Schulz and Hank Ketcham, his earliest influences include MAD magazine's Sergio Aragones and Don Martin, classic animation from Warner Brothers and MGM (director Tex Avery, in particular), later studying the work of such underground artists as Gilbert Shelton and Robert Crumb, and becoming an avid Monty Python fan. He was eventually lured back to the newspaper comics pages when Bill Watterson's \"Calvin and Hobbes\" caught his attention quite profoundly in the late 1980s. In addition to cartooning, Roy is a professional musician and enjoys music festivals, camping, cooking, travel and getting horrendously dirty and sweaty out in the yard. He lives in Florida with his sweetheart and their two children." # ("The Knight Life", "http://comics.com/the_knight_life"), - # "A deft blend of goofy humor and political insight that puts the \u201cfunny\u201d back into the funny pages with uniquely dynamic style. The Knight Life is a hilariously twisted view of life through the eyes and pen of its creator, community-oriented urban hipster and award-winning cartoonist Keith Knight. The Knight Life deftly blends political insight and neurotic humor in a uniquely fluid and dynamic style, offering a comic strip that\u2019s fresh, sharp, topical and funny. Designed for daily newspapers, The Knight Life follows Knight\u2019s long-running, 2007 Harvey Award-winning weekly comic strip \"The K Chronicles,\" which appears on salon.com. An unabashedly provocative political and social satire, The Knight Life tackles contemporary issues like consumer culture, bacon, the media, race, family and everything else, gently mocking the minutiae of daily life with self-deprecating humor, honesty and goofiness\u2014a combination that\u2019s perfect for the comics. And The Knight Life\u2019s energetic style reminds readers that comics can look funny as well as read funny. The result is accessible yet edgy, compassionate and political\u2014and never preachy. Knight won the 2006 and 2007 Glyph Awards, in addition to the 2007 Harvey Award for Best Comic Strip (for \u201cThe K Chronicles\u201d). He creates \u201c(Th)ink,\u201d a weekly comic panel, and is a frequent contributor to Mad Magazine and ESPN The Magazine. He also raps in the \u201csemi-conscious\u201d hip-hop group, the Marginal Prophets. " # ("The Meaning of Lila", "http://comics.com/the_meaning_of_lila"), - # "The strip centers around Lila, her cubicle partner and close friend Boyd, and their friend and co-worker Drew. Lila works as a customer service representative, answering telephones for MetroMart, a fictional large retail store in Cleveland, Ohio. She dislikes her job, but seems too afraid or unmotivated to change the status quo. She is in her mid to late 20s and her main objectives in life are finding the right man and the right pair of shoes. Lila is very attractive, but seems to lack confidence in herself. Lila is also shallow, materialistic, and self-centered. She doesn't read books or newspapers, but loves to read celebrity gossip and fashion magazines. Lila runs her own shoe blog on the Internet, where she writes about and gives advice about women's shoes. Despite her shortcomings, she is still a nice and friendly person. She has a cat named Frankie." # ("The Other Coast", "http://comics.com/the_other_coast"), - # "This strip blends environmental, political, and animal rights issues with comedy. Born in 1957, in Dunedin, New Zealand, Adrian Raeside got his start in cartooning by drawing on washroom walls as a kid. Editorial cartoonist for the Victoria Times Colonist for over 27 years, Raeside\u2019s editorial cartoons appear in over 250 newspapers and magazines worldwide, from the Los Angeles Times to Newsweek Japan. Raeside founded and operated an animation company in 1988, to animate editorial cartoons for the CBC Journal. Over the next four years he created, directed and produced dozens of animated shows for CBS, Turner Broadcasting and Children\u2019s Television Workshop, including adapting two Jim Henson Muppet characters for animation. Raeside left the production business in 1992, but is still actively involved in the creative side, having since written over 60 scripts for various animated TV shows. The Other Coast strip was picked up by Creators Syndicate in 2001 and now appears in over 200 newspapers worldwide. The second Other Coast collection, This Is Your First Rock Garden, Isn't It? was published in 2005. " # ("The Sunshine Club", "http://comics.com/the_sunshine_club"), - # "The Sunshine Club explores the universal human experience of growing up and growing older. With wit and insight, it goes beyond the cliches of cranky retirees and inattentive children to celebrate candidly the human side of change. There's no other way to say it. Aging is a fact of life. It starts at birth and never stops. It's as much a part of our world as eating and sleeping. It's inevitable, if not always welcome. Since we can't control it, the best course of treatment is to laugh about it. That's why there's The Sunshine Club - Life in Generation Rx, a daily and Sunday comic strip by Howie Schneider. The characters are easily recognizable. They are married, single, widowed, flirtatious, romantic, sentimental, philosophical, lonely, gregarious and nostalgic. Our imperfections were never so funny as they are in The Sunshine Club. Howie Schneider (1930-2007). He was the creator of the nationally syndicated comic strip \"Eek and Meek,\" which appeared for 35 years in more than 400 newspapers through Newspaper Enterprise Association. Schneider later created The Sunshine Club in 2003 and continued until his death. He was also a magazine cartoonist whose work was published in The New Yorker, Playboy, Esquire, Redbook, McCall's and many other publications. He was editorial cartoonist for the Provincetown (MA) Banner, an award-winning weekly newspaper, and he twice won the award for Best Editorial Cartoon from the New England Press Association. Schneider co-authored and illustrated Amos: The Story of an Old Dog and His Couch, The Amazing Amos, Amos Ahoy! and Amos Camps Out (Little, Brown). He was illustrator of Blumpoe the Grumpoe Meets Arnold the Cat (Little, Brown); and author and illustrator of Uncle Lester's Hat, No Dogs Allowed (Putnam) and Chewy Louie (Rising Moon), now in its seventh printing. His cartoon books include Howie Schneider Unshucked (On Cape Publications), The World is No Place for Children, The Deceivers (Doubleday), and Mom's the Word (World). There are also three Eek and Meek collections (Pocket Books). In addition to his cartooning, painting and publishing work, Schneider was an accomplished sculptor who worked in bronze, terra cotta and plaster and created likenesses of New Yorker cartoonist Mischa Richter, U.S. Poet Laureate Stanley Kunitz, and many others. Schneider served 20 years on the board of the Newspaper Features Council and eight years on the board of the National Cartoonists Society. He passed away in 2007 at the age of 77." # ("Unstrange Phenomena", "http://comics.com/unstrange_phenomena"), - # "Welcome to the land of UNSTRANGE PHENOMENA, where the weird and the cantaloupe play. Mr. Allison has spent a lifetime rummaging abandoned warehouses, searching for answers to questions that the human race has asked since the beginning of time. This feature, Unstrange Phenomena, will explain the mysteries of the universe and reveal the unsuppressed knowledge of the ages. Be prepared for strange facts that defy natural laws and refute our accepted notions about blah, blah, blah and everything else. Watch for the grand opening of the Unstrange Phenomena Museum, to be located in the brown mobile home across the road from the county jail in Tinfoil, Texas." # ("Watch Your Head", "http://comics.com/watch_your_head"), - # "\u201cWatch Your Head\u201d chronicles the lives of six students attending Oliver Otis University. The strip is told largely through the eyes of Cory, a freshman who\u2019s academically brilliant and socially awkward, especially with girls. His first friend at Otis U. is Omar, a recluse who some suspect is tied umbilically to his computer. Quincy, Omar\u2019s friend (and therefore Cory\u2019s friend by default), seems primarily to be studying women and fun and rarely has a serious moment. Kevin is a foreigner times two\u2014one of the few whites on the predominantly black campus, and Canadian to boot. Robin is the object of Cory\u2019s crush, the woman who leaves him befuddled and tongue-tied. And Jason is Cory\u2019s roommate and polar opposite. Cory Thomas spent his formative years in San Fernando, Trinidad. As a child, his interest in comic books soon developed into an interest in art and cartooning. In 1998, Thomas accepted a full academic scholarship to Howard University in Washington, D.C., to study mechanical engineering. He graduated magna cum laude in 2002 and then returned to Howard in 2003 to acquire his masters degree. That year he also became a fulltime illustrator at the Hilltop, Howard University's newspaper, where he presented the earliest versions of \"Watch Your Head.\" Today, Thomas creates his strip from his home just outside Washington." # ("Wizard of Id", "http://comics.com/wizard_of_id"), - # "The riotous reign of Id's merciless miniature monarch seems secure -- and millions of loyal subjects around the world wouldn't have it any other way. The Wizard of Id has been enchanting audiences since 1964, but the real wizards behind this comic classic were artist Brant Parker and writer Johnny Hart. The pair began paving the path to the Kingdom of Id in 1950, when Parker, a staff artist for the Binghamton Press in upstate New York, was asked to judge a high school art contest. Among the entrants was teenager Johnny Hart, whose work so impressed Parker that he arranged a meeting. Parker and Hart discovered a mutual interest in cartooning, hired an agent and began submitting work to such magazines as the Saturday Evening Post, Collier's and Good Housekeeping. By the end of the decade, Parker was working as an art director at IBM and Hart had created the comic strip B.C., a prehistoric parody of modern man's foibles. In 1964, Hart brought that comic concept even further up to date -- from the Stone Age to the Middle Ages, to be exact -- added a castle of characters and took the premise of The Wizard of Id to Parker. More than a quarter of a century later, Brant Parker passed the torch to his son, Jeff, in 1997. The kingdom they conjured up thrives as well. The Wizard of Id is syndicated to more than 1,000 newspapers worldwide, has generated more than a score of trade paperbacks and consistently earns top rankings in readership polls. The strip has also earned numerous awards, including Best Humor Strip Awards from the National Cartoonist Society. Parker and Hart each were awarded the NCS's Reuben Award for Cartoonist of the Year: Hart in 1971 and Parker in 1984." # ("Working Daze", "http://comics.com/working_daze"), - # "Working Daze is a slightly skewed look at life in a modern, high-tech office. The comic centers around the staff of MacroMicroWare, a computer company that makes a bunch of products, though nobody is really certain what their main market focus is. Still, the CEO is mega-rich, so the staff assumes that somebody somewhere must be doing something right. John Zakour is a humor\/sci-fi writer and graduate student in Human Behavior. In the past, he has done such diverse things as write zillions (well, thousands) of gags for syndicated cartoonists and comedians, ride ambulances as an Emergency Medical Technician, work as a Web guru for a major university (which helped lead to creating Working Daze), write greeting cards, and assistant-teach Judo. His humorous sci-fi book, The Plutonium Blonde, is published by Daw books and is available at fine bookstores all over the country (and now in Russia also). Scott Roberts has worked with John on many projects over the years, starting with the Rugrats comic strip. Scott is the creator of the long-running Patty Cake comic, and a longtime free-lancer for Nickelodeon Magazine and DC Cartoon Network comics. He currently colors and letters Prince Valiant. His work can be viewed at http:\/\/webcomicsnation.com\/scottartist\/. " # ("Working It Out", "http://comics.com/working_it_out"), - # "This comic strip centers around a character named \"Mr Jamison\" \u2013 a bushy-moustached, pencil-nosed low-level manager who seems to take delight in the suffering and mistreatment of his subordinates. Born in 1968, in South Florida, Charlos Gary always dreamed of becoming a cartoonist. One of seven children raised by his parents in an inner-city section of Orlando, he knew at an early age that his artistic ability could become a way out of poverty. However, it wasn't until two years later at the University of Toledo's paper, The Collegian, that he committed himself to becoming a serious cartoonist. After graduation in 1995, his first professional political cartoon appeared in the (Elmira, N.Y.) Star-Gazette, where he got started as a graphic artist. In 1997, Gary moved to Chicago, where he split his time between drawing cartoons and creating graphics for the (Arlington Heights, Ill.) Daily Herald. His work there earned him several awards and honors, including a Pulitzer Prize nomination in 1999. Later that year, Gary began working for the Chicago Tribune as a graphic artist. His cartooning talent didn't go unnoticed in the newsroom, and within two years, he created a single-panel strip called Working It Out, which ran weekly in the Tribune's business section. Gary currently lives in St. Petersburg, Fla., with his wife, Agustina." # ("Zack Hill", "http://comics.com/zack_hill"), - # "Ten-year-old Zack now lives with his widowed mother, who runs a boarding house full of oddballs. A hyperactive kid with an overactive imagination, Zack sometimes causes her to pull her hair out as she tries to make ends meet. The comic appears in over 20 major newspapers, including the Chicago Sun-Times, the Seattle Times, the Philadelphia Daily News and the Buffalo News. Zack Hill is currently being developed into an animated TV show by TV writer Will Schifrin (Fraser) and producer Prudence Fenton (Pee Wee's Funhouse). Zack Hill is also being adapted into a musical by Werner Trieschmann and Tom Tierny (Eleanor). Zack Hill can be seen every day on seattletimes.com or Comics.com. John Deering's family encouraged his early displays of artistic talent, and he decided to pursue a career in art. He studied painting with portrait artist Truman Alston and majored in Fine Art at the University of Arkansas at Little Rock. In 1981, John landed a job at the Arkansas Democrat-Gazette, where his cartooning ability developed in the paper's editorial art department. He was promoted to chief editorial cartoonist in 1988. Numerous regional and national awards soon followed, as John won the John Fischetti Cartooning Award from Columbia College, Chicago, in 1993 and the Berryman Award from the National Press Foundation in 1997. John's editorial cartoons and a comic panel, Strange Brew, are also distributed nationally by Creators Syndicate. John lives in Little Rock with his wife, Kathy, and their sons, Will and Matthew, who provide real-life inspiration for Zack Hill. John's experience as a comic strip writer began years ago when he wrote for Archie Comics Inc. John worked with famed Archie artist Dan DeCarlo, creator of Josie and the Pussycats, writing the Archie comic strip, which ran in over 250 newspapers around the world. He wrote and directed the award-winning independent feature film Best Man in Grass Creek. The film was presented in over 10 film festivals, such as the Montreal Film Festival. It won three awards, including the Bronze Award at the Flagstaff Film Festival, and Best Comedy at the Santa Clarita Film Festival in Los Angeles. Before making his first feature film, John was the VP of Development for Morgan Freeman's production company, Revelations Entertainment in Santa Monica, Calif. He also assisted talent manager Beverlee Dean, who has represented such talent as Reese Witherspoon, Kevin Sorbo and Jim Caviezel." # ("(Th)ink", "http://comics.com/think"), # "Tackling the political and social issues impacting communities of color." # ("Adam Zyglis", "http://comics.com/adam_zyglis"), # "Known for his excellent caricatures, as well as independent and incisive imagery. " # ("Andy Singer", "http://comics.com/andy_singer"), - # "Andy Singer's cartoons are based on his own experiences and what he sees in the world around him. He loves comedy and humor, but is also interested in politics, philosophy, religion, art and history, which is reflected in his cartoons." # ("Bill Day", "http://comics.com/bill_day"), # "Powerful images on sensitive issues." # ("Bill Schorr", "http://comics.com/bill_schorr"), - # "Strong commentary with pointed humor, winner of the National Cartoonists Society\u2019s Editorial Cartoon Award. Also Bill Schorr pens the Grizzwells seen here on Comics.com. " # ("Bob Englehart", "http://comics.com/bob_englehart"), - # "Englehart studied at the American Academy of Art in Chicago before joining the staff of Chicago Today as cartoonist. He now works full-time as editorial cartoonist for The Hartford Courant. " # ("Brian Fairrington", "http://comics.com/brian_fairrington"), - # "Brian is one of the most accomplished young cartoonists in the country. Brian was the recipient of the Locher Award, the Charles M. Schulz Award, and several Society of Professional Journalists awards and Gold Circle Awards. " # ("Bruce Beattie", "http://comics.com/bruce_beattie"), - # "Bruce Beattie has been creating captivating and controversial editorial cartoons since 1986. He is also creator of a comic strip, and his work has been featured in several museum exhibits, including the State of Florida's Museum of History. Beattie graduated from the University of Pennsylvania with a degree in Oriental studies and attended the Art Center College of Design in Los Angeles. He began his career at The Honolulu Advertiser and then moved on to the Daytona Beach News-Journal, where he has been editorial cartoonist since 1981. His awards include the Florida Society of Professional Journalists' Sunshine State Award for Excellence in Editorial Cartoons and the Florida Press Club's Award for Excellence in Journalism. " # ("Cam Cardow", "http://comics.com/cam_cardow"), - # "Cam's editorial cartoons take aim at many of the issues in the news today: Meech Lake, the GST, developments in Europe, steroids, the revolution in China, Canada's love affair with the NHL, and much more. Cam's deft pen skillfully skewers politicians and eloquently illustrates the world's current events. Cam is the pen name of Cameron Cardow, the editorial cartoonist at the Regina Leader Post. Cam recently won the Canadian National Newspaper Award for Cartooning, and his inimitable style will be familiar to anyone who reads a newspaper - his cartoons have appeared in almost all of the major daily papers in Canada." # ("Chip Bok", "http://comics.com/chip_bok"), - # "Chip Bok began his career as the editorial cartoonist at the Clearwater Sun in 1980. In 1983, he joined Knight-Ridder\u2019s early online venture, Viewtron. He also illustrated Dave Barry\u2019s column and drew a weekly cartoon for the Miami Herald\u2019s late great Sunday magazine, Tropic. He became editorial cartoonist for the original John S. Knight paper, the Akron Beacon Journal, in 1987. From his drawing board at the Akron Beacon Journal, Chip Bok has won two National Cartoonists Society awards for Best Editorial Cartoonist (1995, 1999). He was a Pulitzer finalist in 1997. Other awards include the Fischetti Award (1988), National Press Foundation Berryman award (1993), H.L. Mencken Award (1993), and four Ohio A.P. Awards (1992, 1996, 1999, 2000). Bok\u2019s cartoons appear in Time, Newsweek, Washington Post, The New York Times, The Los Angeles Times and many other newspapers, magazines and websites through Creators Syndicate. He is the author of two books: Bok! The 9\/11 Crisis in Political Cartoons (University of Akron Press, 2002) and A Recent History of the United States in Political Cartoons: A Look Bok! (University of Akron Press, 2005). Bok is a graduate of the University of Dayton and currently lives in Akron with his wife Deb and two of their four children." # ("Chris Britt", "http://comics.com/chris_britt"), - # "Chris Britt's political cartoons are sometimes controversial, often outrageous and always thought-provoking. His take-no-prisoners style has been entertaining readers since 1991. A self-described liberal, Britt nevertheless delights in skewering deserving politicians of every persuasion. His numerous awards include first place for editorial cartooning from the Washington Press Association in 1995, the National Press Foundation's Berryman Award as editorial cartoonist of the year in 1994, and the Sigma Delta Chi Award for editorial cartooning from the Society of Professional Journalists in 2009. " # ("Chuck Asay", "http://comics.com/chuck_asay"), - # "Chuck sifts the events of the day through his biblical worldview and tries to persuade readers to see things his way. That rights are given by a higher authority than the governments of men, that mankind is not the ultimate arbiter of truth and that our Constitutional Republic is worth protecting. Chuck believes ideas, not politicians rule the world. He tries to protect ideas which he thinks are good and attacks ideas he thinks bring harm. Asay has experienced life as a teacher, a grandpa and bomb-thrower of ideas. His home base is in Colorado Springs with the Gazette newspaper." # ("Clay Bennett", "http://comics.com/clay_bennett"), - # "Clay Bennett visually distills complex issues down to their very essence. When Clay Bennett left The Christian Science Monitor in 2008 to join the Chattanooga Times Free Press, his editorial cartoons became available for syndication. Washington Post Writers Group Editorial Director Alan Shearer immediately signed Bennett, despite industry forces that are depleting the ranks of cartoonists and reducing the space for their work. \"I've heard people in our business say editorial cartooning is in decline as newspapers slash and burn, and they are right to a degree,\" Shearer said. \"But creatively, cartooning is as strong as ever, and Clay is one of the brightest lights. His work will be a strong presence in the marketplace.\" Bennett has been the editorial cartoonist for The Christian Science Monitor since 1998 and, while there, he was a Pulitzer finalist for an unprecedented five consecutive years, winning it in 2002. He has also earned just about every other editorial cartoon award there is, including the Robert F. Kennedy Journalism Award, the John Fischetti Editorial Cartoon Competition, the Overseas Press Club's Thomas Nast Award, the National Headliner Award, the Society of Professional Journalists' Sigma Delta Chi Award, the National Journalism Award from the Scripps Howard Foundation, and the National Cartoonists Society Division Award for Best Editorial Cartoons. Bennett was also named Editorial Cartoonist of the Year by Editor & Publisher magazine in 2001. Bennett was the editorial cartoonist at the St. Petersburg (Fla.) Times from 1981 until he was fired in 1994, whereupon he spent more than three years in \"professional oblivion\" before being hired by The Monitor. \"The Christian Science Monitor saved my career,\" said Bennett. \"The editors there showed faith in me when few in this business seemed willing to.\" Before working in St. Petersburg, Bennett was a staff artist at both the Pittsburgh Post-Gazette and the Fayetteville (NC) Times. He is married to portrait artist, illustrator and cartoonist Cindy Procious, and they have three children, Matt, Ben and Sarah." # ("Daryl Cagle", "http://comics.com/daryl_cagle"), - # "Daryl Cagle has been one of America\u2019s most prolific cartoonists. Raised in California, Daryl went to college at UC Santa Barbara and then moved to New York City, where he worked for 10 years with Jim Henson\u2019s Muppets, illustrating scores of books, magazines, calendars, and all manner of products. In 2001, Daryl started a new syndicate, Cagle Cartoons, Inc. (www.caglecartoons.com), which distributes the cartoons of 50 editorial cartoonists and columnists to more than 800 newspapers in the United States, Canada, and Latin America. Daryl is a past president of the National Cartoonists Society and current president of the National Cartoonists Society Foundation. He is a frequent guest on Fox News, CNN and MSNBC. Daryl is a popular and entertaining public speaker. " # ("David Fitzsimmons", "http://comics.com/david_fitzsimmons"), # "David Fitzsimmons is a new editorial cartoons on comics.com. He is also a staff writer and editorial cartoonist for the Arizona Daily Star. " # ("Drew Litton", "http://comics.com/drew_litton"), @@ -258,43 +149,26 @@ class Comics(BasicNewsRecipe): # ("Eric Allie", "http://comics.com/eric_allie"), # "Eric Allie is an editorial cartoonist with the Pioneer Press and CNS News. " # ("Gary Markstein", "http://comics.com/gary_markstein"), - # "Gary Markstein makes a living by skewering pompous public figures and politicians of every political stripe. Gary Markstein cut his cartooning teeth while doodling in the margins of his grade-school homework and went on to earn a degree in fine arts from Arizona State University. Now he makes a living by skewering pompous public figures and politicians of every political stripe. Markstein, is an artist at the Milwaukee Journal Sentinel and was previously the cartoonist for the Tribune Newspapers in Arizona. His many awards for cartoons and illustrations include the Milwaukee Press Club Award, Cox Newspapers' Best Editorial Cartoonist award, a second-place National Headliner Award, a third-place Berryman award from the National Press Foundation (both in 1997) and the 1997 John Fischetti Editorial Cartoonist Competition for 1997. He won the Global Media Award for Excellence in Population Reporting two years in a row (2001, 2002). " # ("Gary McCoy", "http://comics.com/gary_mccoy"), # "Gary McCoy is known for his editorial cartoons, humor and inane ramblings. He is a 2 time nominee for Best Magazine Cartoonist of the Year by the National Cartoonists Society. He resides in Belleville, IL. " # ("Gary Varvel", "http://comics.com/gary_varvel"), - # "Varvel is a well established book illustrator as well as editorial cartoonist for the The Indianapolis Star. Born in Indianapolis, Indiana in 1957, Varvel was drawn to cartoons as a child when he saw a copy of MAD magazine. In 1974, he met Jerry Barnett, the editorial cartoonist for The Indianapolis News who mentored and encouraged him to pursue a career in cartooning. In 1975, Varvel studied visual communication at John Herron School of Art at Indiana University, Purdue University at Indianapolis (IUPUI). In college he drew cartoons for the Sagamore, the college newspaper. Varvel was hired as an newsroom artist for The Indianapolis News when Jerry Barnett recommended him for the position. He spent the next 16 years working as the chief artist managing a 3-person art department. During that time, Varvel applied to many newspapers around the country for an editorial cartooning position. But in 1994, pulitzer prize winning cartoonist Charles Werner retired from The Indianapolis Star and Varvel's dream came true when he landed the position. In 2005, Varvel placed second in the national Best of Gannett contest for Editorial Cartooning. In the past 12 years, Varvel has won the Indiana Society of Professional Journalists' Award for Best Editorial Cartoon ten times. He is also an eight-time winner of the first place award for Best Editorial Cartoonist in the Hoosier State Press Association Contest since 1995. Varvel's work is nationally syndicated through Creators Syndicate. His cartoons have appeared on CNN, FOX News and in Newsweek, Time, The New York Times, The Washington Post, USA Today, Washington Times, National Review, World magazine and Sports Illustrated. Varvel lives in Brownsburg with his wife of 26 years, Carol. They have three children: Ashley-23, Brett-21 and Drew-16." # ("Henry Payne", "http://comics.com/henry_payne"), - # "Henry Payne reports regularly on economic, consumer and environmental issues. He is the editorial cartoonist for The Detroit News. He also writes and draws a column, Payne & Ink, which appears on the paper's Monday Op-Ed page. His weekly CAR-toon - a humorous look at America's car-crazy culture - runs Tuesdays on The News' web site, detnews.com. He has been a runner-up for both the Pulitzer and Mencken awards. Payne is an active race car driver, tennis and squash player, and lives with wife, Talbot, and two children in Bloomfield Hills, Michigan." # ("JD Crowe", "http://comics.com/jd_crowe"), - # "Crowe generously spreads his tough love to international and national issues based on the news of the day. J.D. Crowe is the staff cartoonist for the Mobile Register (Mobile, Alabama.) He aggressively works local and state issues (Lord knows there's lots of work to be done in Lower Alabama,) feeling it his duty to weed out numskull politicians on the homefront before they can grow in the national spotlight. J.D. lives near the gulf coast in Fairhope, Alabama, with his family." # ("Jeff Parker", "http://comics.com/jeff_parker"), - # "An award winning cartoonist, Parker hits home with a powerful satirical twist on today's issues. Growing up with rockets on Florida's space coast, Jeff Parker first began drawing editorial cartoons for Florida Environments news magazine in 1989 followed by Orlando Business Journal in 1990 before joining his hometown newspaper, Florida Today, in 1992. In 2005, Jeff was honored with the National Cartoonists Society's Reuben Division Award for Editorial Cartooning after three prior nominations. Jeff works from his home studio. His wife, Pat, considers him her only child. " # ("Jeff Stahler", "http://comics.com/jeff_stahler"), - # "Jab, poke, stick, skewer, prod, lampoon... this is the unique language of political cartoonist Jeff Stahler. Stahler was a finalist for the National Cartoonists Society's 1999 Reuben division award for Best Editorial Cartoons and has won numerous national and local awards, including first place in the 1990 John Fischetti Editorial Cartoon Competition. He lives in Cincinnati with his family and is the Editorial cartoonist for The Columbus Dispatch. Stahler also creates the whimsical slice-of-life daily comic panel \"Moderately Confused\" seen here on Comics.com." # ("Jerry Holbert", "http://comics.com/jerry_holbert"), - # "Holbert's strips are an even-handed lampooning of everyday life. Jerry Holbert is on staff at the Boston Herald where he is an editorial cartoonist. He was named the best editorial cartoonist of the year by the National Cartoonists Society in 2001. " # ("John Cole", "http://comics.com/john_cole"), - # "John Cole's interest in cartooning took root while drawing for his junior high newspaper. He went on to claim honorable mention (1994) and first place (2004) in the John Fischetti Editorial Cartoon Competition, as well as the undying animosity of Durham's politically correct readership. In 1985, John worked at the Durham Morning Herald (later The Herald-Sun) in Durham, North Carolina. Exploiting the town's robust political mix, he eventually convinced his superiors to name him the paper's full time editorial cartoonist. Cole joined the editorial department of The Times-Tribune in Scranton, Pennsylvania, in April, 2005. He lives in Pennsylvania with his family. " # ("John Darkow", "http://comics.com/john_darkow"), # "John Darkow is a contributing editorial cartoonist for the Humor Times as well as editoiral cartoonist for the Columbia Daily Tribune, Missouri" # ("John Sherffius", "http://comics.com/john_sherffius"), - # "John Sherffius has been capturing the issues of the day in pen and ink since his college years at the University of California, Los Angeles. Sherffius has been honored in recent years with national cartooning awards from the Robert F. Kennedy Foundation, the National Press Foundation, the Society of Professional Journalists and the Scripps Howard Foundation. He is the 2008 winner of the Herblock Award. His home paper is the Daily Camera in Boulder, Colo." # ("Larry Wright", "http://comics.com/larry_wright"), - # "Larry began drawing political cartoons in 1960 for the Okinawa Morning Star, a civilian-owned English language daily, while serving with the Army on Okinawa. He left Okinawa in 1965 and returned to his hometown of Detroit for a job on the news desk of the Detroit Free Press. Here he began drawing a daily political cartoon on the Free Press Feature Page and in 1976 The Detroit News offered me a position as a full-time cartoonist. He later took the job of Associate Creative Director of detnews.com, the Detroit News website that went online in July 1995. He lives in Michigan with his family. You can also see his strip Kit N' Carlyle here at comics.com." # ("Lisa Benson", "http://comics.com/lisa_benson"), - # "Politically conservative, artistically brilliant cartoons that speak to mainstream America. Lisa Benson is a rare talent who can illustrate a major news story in a single drawing and convey her ideas to readers in very few words,\u201d said Alan Shearer, Writers Group editorial director. \u201cConservative describes her politically. Brilliant describes her artistically. A combination of artistic talent, moral indignation and strong point of view mesh somehow to produce some of the finest work I have ever seen from a local cartoonist. Looking at her portfolio, I was blown away.\u201d Benson came to editorial cartooning a little later than most, in the midst of raising her four children. In the early 1990s, Benson\u2019s husband\u2019s business was going through an industry wide recession, so she began looking at employment options to supplement the family income. In 1990, she started drawing cartoons for a local monthly publication, \u201cThe Senior Advocate,\u201d and doing paste-up and cutting rubylith for the color separations. Benson soon decided to give editorial cartooning a try. \u201cI was so confident the Daily Press needed my services back in 1992 that I stuffed ONE sample cartoon in an envelope and mailed it to the opinion page editor. I must have included my phone number, because Steve Williams called me in for a meeting and hired me to do two cartoons each week.\u201d Benson stopped editorial cartooning from 2002 to 2004, a period she calls \u201cnursing home hell.\u201d Despite the personal pressures, Benson earned first-place honors from the California Newspaper Publishers Association (under 75,000 circulation) in 2000 and second place in 2004. In 2005, she took both second and third place from the Society of Professional Journalists\u2019 Inland Southern California Chapter. A native Californian, Benson lives in Apple Valley with her husband, Gregory, a building designer. They have four children, ages 18 to 26." # ("Marshall Ramsey", "http://comics.com/marshall_ramsey"), - # "Cartooning whiz kid Marshall Ramsey has been creating cartoons with a fresh, 'Generation X' point of view since 1994. Cartooning whiz kid Marshall Ramsey began drawing when his mother, an art teacher, gave him a pencil and a piece of paper to keep him quiet in church. Those early doodlings eventually evolved into the slightly warped but right on target cartoons that Ramsey has been creating since 1994. Full of biting wit, his cartoons provide a fresh, 'Generation X' point of view. Born in New Jersey, he grew up in Atlanta and earned a marketing degree at the University of Tennessee, where he was a cartoonist at the school newspaper. His honors include being named winner of the 1993 John Locher Memorial Award. Ramsey began his professional career by filling in for the editorial cartoonist at the Knoxville Journal. He moved on to positions as creative director at the Conroe (Texas) Courier and at Copley News Service before becoming the editorial cartoonist at the Jackson, Miss., Clarion-Ledger. He was a Pulitzer finalist in 2002." # ("Matt Bors", "http://comics.com/matt_bors"), - # "Matt Bors relentlessly follows the latest absurdities in American politics and culture. His illustration work can be found in dozens of magazines and newspapers across the country and has been featured on the covers of numerous newsweeklies, including the NY Press, Miami New TImes, Boston Phoenix, and OC Weekly. Matt graduated from The Art Institute of Pittsburgh in 2003 and currently resides in Portland, OR." # ("Michael Ramirez", "http://comics.com/michael_ramirez"), - # "Two-time Pulitzer Prize winner Michael Ramirez combines an encyclopedic knowledge of the news with a captivating drawing style. In addition to the 1994 and 2008 Pulitzer Prizes, Ramirez was the 2008 winner of the prestigious Fischetti Award. He is a three-time Sigma Delta Chi, Society of Professional Journalism Award winner, a Lincoln Fellow and a recipient of the UCI Medal. He is a senior editor and the editorial cartoonist for Investor's Business Daily. He is formerly the editorial cartoonist for the Los Angeles Times, The Memphis Commercial Appeal and a contributing cartoonist for USA Today." # ("Mike Keefe", "http://comics.com/mike_keefe"), - # "Keefe's cartoons are often considered intense and irreverent. He is winner of several top awards including The Fischetti editorial cartoon competition (1991, 2001,2007), the National Headliners Club (1986), and the Society of Professional Journalists (1986). Keefe, is a former US Marine, college math teacher, and for a short time, (before Frank Shorter's heat), the state masters record holder in the indoor mile. He plays guitar and harp for the rock and blues band, Falling Rock. Keefe has tow grown children and lives with his wife in downtown Denver. He has no known allergies" # ("Mike Luckovich", "http://comics.com/mike_luckovich"), - # " 2006 winner of the Reuben, the National Cartoonists Society's top award for cartoonist of the year. After freelancing and selling life insurance to make ends meet following his graduation from the University of Washington in 1982, Luckovich landed his first cartooning job at the Greenville News in South Carolina. After nine months at the News, Luckovich was hired by The Times-Picayune in New Orleans, where he stayed for four years before moving on to Atlanta. Mike Luckovich of the Atlanta Constitution received two amazing honors in 2006, winning both a Pulitzer Prize and the Reuben award for Outstanding Cartoonist of the Year. This was the second Pulitzer for Luckovich; his first was awarded in 1995. He had previously received the Reuben award for Editorial Cartooning in 2001, but this was his first time to be named the overall outstanding cartoonist by a group of his peers. Impressive as these achievements are, they are only the latest in a long line of awards for Luckovich. He was a runner-up for the Pulitzer in 1987 before garnering the 1995 win. In 1989, he won the Overseas Press Club's award for the \"Best Cartoons on Foreign Affairs for 1989,\" and in 1991, he was awarded the National Headliners award for editorial cartoonists. In 1994, a Luckovich cartoon was selected by voters in a Newsweek magazine poll as one of the four best editorial cartoons of the year. Luckovich's cartoons, syndicated nationally by Creators Syndicate, appear in more than 350 daily publications, including The Washington Post, The San Diego Union-Tribune, The Denver Post, Newsday, New York Post, The Cleveland Plain-Dealer, The Dallas Morning News, the Boston Globe, the Seattle Times, the Los Angeles Times, the Chicago Tribune, the Nashville Tennessean and the Houston Chronicle, and are reprinted regularly in Time, Newsweek and the New York Times." # ("MIke Thompson", "http://comics.com/mike_thompson"), - # "Mike Thompson's award-winning cartoons have appeared in publications including Time, The New York Times and The Wall Street Journal. Mike Thompson is the editorial cartoonist for the Detroit Free Press. His work has won numerous honors, including The 2002 Overseas Press Club Award for cartooning, the national 2000 Society of Professional Journalists Sigma Delta Chi Award, the 2000 National Press Foundation Award, the H.L. Mencken award and the national Women in Communications Clarion Award. Thompson, who also draws for USA Today on a rotating basis, has had his work reprinted in such publications as Time, Newsweek, Forbes, The New York Times and The Wall Street Journal. In addition, his cartoons have been featured on CNN, C-SPAN, the NBC \"Today\" show and the Fox News Network. Thompson began his career as contributing cartoonist for The Milwaukee Journal and later worked as staff cartoonist for the St. Louis Sun and the Copley Illinois newspapers before joining the Free Press in November 1998. " # ("Monte Wolverton", "http://comics.com/monte_wolverton"), # "Unique mix of perspectives" # ("Mr. Fish", "http://comics.com/mr_fish"), @@ -302,11 +176,9 @@ class Comics(BasicNewsRecipe): # ("Nate Beeler", "http://comics.com/nate_beeler"), # "Middle America meets the Beltway." # ("Nick Anderson", "http://comics.com/nick_anderson"), - # "Cartoons with an independent streak and a sophisticated use of color. Pulitzer winner. Nick Anderson of the Houston Chronicle is an avowed independent who covers politics and contemporary cultural issues in a way that connects with readers. His loose, idiosyncratic style carries with it an unconventional message that has broad appeal. \"I approach my work with a healthy skepticism for the ideological extremists littering our political landscape,\" explains Anderson. Anderson grew up in Toledo, Ohio, in a family that encouraged independent thinking in politics. Anderson majored in political science at Ohio State University and was editorial cartoonist for the school's newspaper, The Lantern. In 1989, he won the Charles M. Schulz Award for best college cartoonist. He interned one summer at The Louisville Courier-Journal, which immediately recognized his talent. After his graduation from OSU, the newspaper created a position for him as an associate editorial cartoonist and illustrator. Anderson was promoted to chief editorial cartoonist in 1995 and was syndicated by the Writers Group a year later. After 15 years with the Courier-Journal, in 2006 Anderson accepted a position at the Houston Chronicle. In 2005, Anderson was awarded the Pulitzer Prize for Editorial Cartooning. In addition to the Pulitzer, Anderson earned the Sigma Delta Chi award in 2000, the 1999 Fischetti Award, and first-place honors for editorial cartooning in the Best of Gannett Awards in 1996, 1997 and 1999. Anderson's cartoons have been published in Newsweek, The New York Times, The Washington Post, USA Today, the Chicago Tribune and other papers. He lives in Houston with his wife, Cecilia Baylon, and his sons, Colton and Travis, whose names Anderson hides in each of his cartoons." # ("Pat Bagley", "http://comics.com/pat_bagley"), # "Unfair and Totally Unbalanced." # ("Paul Szep", "http://comics.com/paul_szep"), - # "Editorial cartoons from a two time Pulitzer Prize winner as well as a Harvard fellow. Paul Szep was born in the darkest Canada, which accounts for the way he talks, eh? He was a hockey player and worked in the steel mills, which accounts for the way he thinks. He is a graduate of the Ontario College of Art in Toronto, Ontario. He has won two Pulitzer Prizes, two Sigma Delta Chi Awards, a Headliner Award, the International Thomas Nast Award, three honorary doctorates, and was inducted into Hamilton's Hall of Fame in 2003. He was a fellow at Harvard. Paul has two great children, Amy and Jason, and is a single-digit golfer, which only means he plays way too much golf and draws far too few cartoons." # ("RJ Matson", "http://comics.com/rj_matson"), # "Power cartoons from NYC and Capitol Hill" # ("Rob Rogers", "http://comics.com/rob_rogers"), @@ -314,17 +186,11 @@ class Comics(BasicNewsRecipe): # ("Robert Ariail", "http://comics.com/robert_ariail"), # "Clever and unpredictable" # ("Scott Stantis", "http://comics.com/scott_stantis"), - # "Scott Stantis regularly skewers the prominent political figures of the day from his home paper, the Chicago Tribune. After graduating from high school in Madison, Wis., Stantis and his family returned to Southern California, and Scott enrolled at Los Angeles Community College and California State University, Long Beach. Shortly after being kicked out of the latter, he landed the job of editorial cartoonist for the Orange County Register. Thus began his career in earnest. Next he was hired by The Commercial Appeal in Memphis, Tenn. Additional editorial cartoon jobs followed, first at The Arizona Republic and now at the Chicago Tribune. He lives in Hoover, Ala., with a mortgage, car payments, his wife Janien (since 1981) and two sons. He also has a box turtle and a dog named Dogzilla. When Scott isn't creating editorial cartoons, he works on a comic strip, 'The Buckets,' and other animation projects. He also writes screenplays, reads, collects political memorabilia, plays with his kids, walks the dog and ignores his yard." # ("Signe Wilkinson", "http://comics.com/signe_wilkinson"), - # "Left-leaning bite that makes readers think -- as soon as they stop laughing. After acquiring a BA in English from a western university of middling academic reputation, Wilkinson was unprepared for real work ... so she became a reporter, stringing for the West Chester (PA) Daily Local News. She also worked for the Quakers, the Academy of Natural Sciences of Philadelphia, and with a housing project in Cyprus, a job that ended with a bang when a coup d'etat was followed by a military invasion from Turkey. Back in the newsroom, Wilkinson began drawing the people she was supposed to be reporting on. She realized cartooning combined her interests in art and politics without taxing her interest in spelling. After a year of remedial art school, including a stint at the Pennsylvania Academy of the Fine Arts, she began freelancing at several Philadelphia and New York publications, finally landing a full-time job at the San Jose Mercury News in 1982. After 3 1\/2 years on a steep learning curve, Wilkinson repaid her long-suffering Mercury News editor by taking a job at the Philadelphia Daily News. In addition to her five cartoons a week for the Daily News, Wilkinson has drawn mulch-based cartoons for Organic Gardening magazine, mortarboard-based cartoons for the Institute for Research on Higher Education and water-based cartoons for the University Barge Club newsletter. \"How to Grow the $735 Tomato\" is the title of her 1999 gardening calendar. Her awards include the 1992 Pulitzer Prize, the 1991 Berryman Award and 1997 Overseas Press Club Award. Her most cherished honor was being named \"the Pennsylvania state vegetable substitute\" by the speaker of the Pennsylvania House of Representatives in 1989.bb" # ("Steve Benson", "http://comics.com/steve_benson"), - # "From behind his drawing board at The Arizona Republic, editorial \u201charpoonist\u201d Steve Benson regularly lobs his ink-bottle grenades, drawing beads on rascals in high places, as well as drawing fire. Indeed, Steve\u2019s work proves the observation of his editor, \u201cA picture is worth a thousand phone calls.\u201d Responding to a cartoon drawn at his expense, Arizona\u2019s late Sen. Barry Goldwater penned the cartoonist the following note: \u201cThere are -- and have been -- good Bensons. You ain\u2019t.\u201d In 1993, Steve won the Pulitzer Prize for editorial cartooning. Prior to winning that award, he held the distinction of being the contest\u2019s most nominated loser. His cartoons have also earned him a National Headliner Award, an Overseas Press Club Citation for Excellence, a Rocky Mountain Emmy, a place in Who\u2019s Who in the West, and several Best of the West and Arizona Press Club Awards. He was a 2002 recipient of the American Civil Liberties Union \u201cPractitioner of the First Amendment Award,\u201d given to him for having \u201ctaken on John Ashcroft, Jerry Falwell, President Bush and anyone else who has sought to denigrate or to deprive us of liberties we are guaranteed under the Bill of Rights.\u201d Steve\u2019s work has been a regular cause of morning upset and\/or delight around the country\u2019s breakfast tables for 20 years. His cartoons are nationally distributed by Creators Syndicate. They have also appeared in Time, Newsweek, U.S. News & World Report, the New York Times and The Washington Post, as well as on CNN, MSNBC, ABC\u2019s Nightline, CBS\u2019s 60 Minutes and PBS's MacNeil-Lehrer Report -- not to mention in millions of readers\u2019 wastebaskets. Steve is past-president of the Association of American Editorial Cartoonists. He is a native of Sacramento, Calif., an Eagle Scout and a 1979 alumnus of Brigham Young University, where he graduated magna cum loudest. Steve is the author of five books of his editorial cartoons. Married to Mary Ann Christensen of Preston, Idaho, since 1977, Steve and his wife reside in Gilbert, Ariz. They have four children, all grown and all living under assumed names." # ("Steve Breen", "http://comics.com/steve_breen"), - # "Two-time Pulitzer Prize-winner Steve Breen is fast developing a reputation for provocative political cartoons. A Southern California native, Breen spent much of his childhood at home reading Mad magazine while his friends were off at the beach. Although he earned a degree in political science and a U. S. history teaching credential, Breen was hooked on cartooning as a career after one of his cartoons was published in Newsweek when he was only 19 years old. He is the winner of the 2007 Berryman Award presented by the National Press Foundation, and the 1998 and 2009 Pulitzer Prize for Editorial Cartooning. " # ("Steve Kelley", "http://comics.com/steve_kelley"), - # "An honors graduate from Dartmouth College, Kelley spent two decades as a political cartoonist for The San Diego Union-Tribune. In 2002, he moved to The Times-Picayune in New Orleans. His work has won dozens of awards, including six first-place finishes from the California Newspaper Publishers Association. In 2001, he won first-place awards from the CNPA, the Los Angeles Press Club and the Best of the West competition. That same year, he also won the National Headliner Award. The Virginia native is a popular speaker and humorist. A veteran of seven appearances on The Tonight Show, Kelley gives much of his time and talent to charity. Funny Money, which he co-created, has provided funding for the San Diego Child Abuse Prevention Foundation for seven consecutive years. In 2001, he started 1,000 Laughs for 1,000 Smiles to raise money to fund reconstructive surgery for children in Mexico. Kelley is the father of a young son, Hayden, about whom he brags without regard to the listener's interest." # ("Steve Sack", "http://comics.com/steve_sack"), - # "Steve Sack has been the editorial cartoonist for the Minneapolis Star Tribune since 1981. A native of the Twin Cities, Steve was born in St. Paul, Minn. in 1953. His newspaper career began while attending the University of Minnesota, where he illustrated features and drew editorial cartoons for the school paper, The Minnesota Daily. Two years later, he was hired as staff cartoonist for the Fort Wayne, Ind., Journal-Gazette. After three years, Steve returned to Minnesota to join the Star Tribune. He has won assorted Minnesota cartooning awards and has received national recognition of his work, winning the Press Club's National Headliner Award, the Sigma Delta Chi cartooning award and the Scripps Howard Foundation's editorial cartooning contest. In 2004, he was a named a finalist for the Pulitzer Prize. With partner Craig Macintosh, he also produces the children's Sunday comics feature \"Doodles,\" and in his free time, he enjoys oil painting. Steve lives in the Twin Cities with his wife, Beth" ]: articles = self.make_links(url) if articles: diff --git a/recipes/countryfile.recipe b/recipes/countryfile.recipe index 7a41b5b905..0502129791 100644 --- a/recipes/countryfile.recipe +++ b/recipes/countryfile.recipe @@ -1,11 +1,12 @@ +from calibre import browser from calibre.web.feeds.news import BasicNewsRecipe class AdvancedUserRecipe1325006965(BasicNewsRecipe): title = u'Countryfile.com' - cover_url = 'http://www.buysubscriptions.com/static_content/the-immediate/en/images/covers/CFIL_maxi.jpg' + #cover_url = 'http://www.countryfile.com/sites/default/files/imagecache/160px_wide/cover/2_1.jpg' __author__ = 'Dave Asbury' description = 'The official website of Countryfile Magazine' - # last updated 29/1/12 + # last updated 15/4/12 language = 'en_GB' oldest_article = 30 max_articles_per_feed = 25 @@ -13,7 +14,23 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe): no_stylesheets = True auto_cleanup = True #articles_are_obfuscated = True + def get_cover_url(self): + soup = self.index_to_soup('http://www.countryfile.com/') + cov = soup.find(attrs={'class' : 'imagecache imagecache-160px_wide imagecache-linked imagecache-160px_wide_linked'}) + #print '******** ',cov,' ***' + cov2 = str(cov) + cov2=cov2[124:-90] + #print '******** ',cov2,' ***' + # try to get cover - if can't get known cover + br = browser() + br.set_handle_redirect(False) + try: + br.open_novisit(cov2) + cover_url = cov2 + except: + cover_url = 'http://www.countryfile.com/sites/default/files/imagecache/160px_wide/cover/2_1.jpg' + return cover_url remove_tags = [ # dict(attrs={'class' : ['player']}), diff --git a/recipes/daily_mirror.recipe b/recipes/daily_mirror.recipe index d6794b1d97..e050a123a9 100644 --- a/recipes/daily_mirror.recipe +++ b/recipes/daily_mirror.recipe @@ -1,77 +1,94 @@ from calibre.web.feeds.news import BasicNewsRecipe +from calibre import browser import re + class AdvancedUserRecipe1306061239(BasicNewsRecipe): title = u'The Daily Mirror' - description = 'News as provide by The Daily Mirror -UK' + description = 'News as provided by The Daily Mirror -UK' __author__ = 'Dave Asbury' - # last updated 11/2/12 + # last updated 28/4/12 language = 'en_GB' - - cover_url = 'http://yookeo.com/screens/m/i/mirror.co.uk.jpg' + #cover_url = 'http://yookeo.com/screens/m/i/mirror.co.uk.jpg' masthead_url = 'http://www.nmauk.co.uk/nma/images/daily_mirror.gif' oldest_article = 1 - max_articles_per_feed = 5 + max_articles_per_feed = 12 remove_empty_feeds = True remove_javascript = True no_stylesheets = True - auto_cleanup = True + # auto_cleanup = True #conversion_options = { 'linearize_tables' : True } - #keep_only_tags = [ - # dict(name='h1'), - # dict(name='div',attrs={'id' : 'body-content'}), - #dict(name='div',atts={'class' : 'article-body'}), + + keep_only_tags = [ dict(name='h1'), + dict(name='div',attrs={'class' : 'lead-text'}), + dict(name='div',attrs={'class' : 'styleGroup clearfix'}), + dict(name='div',attrs={'class' : 'widget relatedContents pictures widget-editable viziwyg-section-245 inpage-widget-158123'}), + dict(name='figure',attrs={'class' : 'clearfix'}), + dict(name='div',attrs={'class' :'body '}), + #dict(attrs={'class' : ['article-attr','byline append-1','published']}), #dict(name='p'), - # ] + ] - #remove_tags_after = [dict (name='div',attrs={'class' : 'related'})] remove_tags = [ + dict(attrs={'class' : 'comment'}), dict(name='title'), - dict(name='div',attrs={'class' : ['inline-ad span-16 last','caption']}), - # dict(name='div',attrs={'id' : ['sidebar','menu','search-box','roffers-top']}), - #dict(name='div',attrs={'class' :['inline-ad span-16 last','article-resize','related','list teasers']}), - #dict(attrs={'class' : ['channellink','article-tags','replace','append-html']}), - ] - - # preprocess_regexps = [ - #(re.compile(r'', re.IGNORECASE | re.DOTALL), lambda match: '')] - preprocess_regexps = [ - (re.compile(r'- mirror.co.uk', re.IGNORECASE | re.DOTALL), lambda match: '')] + dict(name='ul',attrs={'class' : 'clearfix breadcrumbs '}), + dict(name='ul',attrs={'id' : 'login-201109171215'}), + dict(name='div',attrs={'class' : ['inline-ad span-16 last','caption']}),#'widget navigation breadcrumb widget-editable viziwyg-section-198 inpage-widget-80721 span-17','image-credit' + ] preprocess_regexps = [ - (re.compile(r'Advertisement >>', re.IGNORECASE | re.DOTALL), lambda match: '')] + (re.compile(r'- mirror.co.uk', re.IGNORECASE | re.DOTALL), lambda match: '')] - #preprocess_regexps = [ - #(re.compile(r'Sponsored Links', re.IGNORECASE | re.DOTALL), lambda match: '')] feeds = [ + (u'News',u'http://www.mirror.co.uk/news/rss.xml'), + (u'Sports',u'http://www.mirror.co.uk/sport/rss.xml'), + (u'3AM',u'http://www.mirror.co.uk/3am/rss.xml'), + (u'Lifestyle',u'http://www.mirror.co.uk/lifestyle/rss.xml') - (u'UK News', u'http://feed43.com/0287771688643868.xml') - ,(u'Tech News', u'http://feed43.com/2455520588350501.xml') - ,(u'Weird World','http://feed43.com/0863800333634654.xml') - ,(u'Sport','http://feed43.com/7713243036546130.xml') - ,(u'Sport : Boxing ','http://feed43.com/0414732220804255.xml') - ,(u'Sport : Rugby Union','http://feed43.com/4710138762362383.xml') - ,(u'Sport : Other','http://feed43.com/4501416886323415.xml') - ,(u'TV and Film','http://feed43.com/5238302853765104.xml') - ,(u'Celebs','http://feed43.com/8770061048844683.xml') - ,(u'Life Style : Family','http://feed43.com/4356170742410338.xml') - ,(u'Travel','http://feed43.com/1436576006476607.xml') # example of commented out feed not needed ,(u'Travel','http://www.mirror.co.uk/advice/travel/rss.xml') ] extra_css = ''' - body{ text-align: justify; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:normal;} - h1{ font-size:18px;} - img { display:block} - ''' + h1{ font-size:medium;} + body{ text-align: justify; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:normal;} + img { display:block} + '''# + + def get_cover_url(self): + soup = self.index_to_soup('http://www.politicshome.com/uk/latest_frontpage.html') +# look for the block containing the mirror button and url + cov = soup.find(attrs={'style' : 'background-image: url(http://www.politicshome.com/images/sources/source_frontpage_button_92.gif);'}) + cov2 = str(cov) + cov2='http://www.politicshome.com'+cov2[9:-142] +#cov2 now contains url of the page containing pic + soup = self.index_to_soup(cov2) + cov = soup.find(attrs={'id' : 'large'}) + cov2 = str(cov) + cov2=cov2[27:-18] + #cov2 now is pic url, now go back to original function + br = browser() + br.set_handle_redirect(False) + try: + br.open_novisit(cov2) + cover_url = cov2 + except: + cover_url ='http://profile.ak.fbcdn.net/hprofile-ak-snc4/373019_6149699161_1710984811_n.jpg' + + # print '******** string is ', cov2,' ***' + #cover_url = cov2 + #cover_url = 'http://www.thesun.co.uk/img/global/new-masthead-logo.png' + return cover_url + + diff --git a/recipes/der_standard.recipe b/recipes/der_standard.recipe index 65bf9a9746..095764f3c1 100644 --- a/recipes/der_standard.recipe +++ b/recipes/der_standard.recipe @@ -10,8 +10,8 @@ from calibre.web.feeds.news import BasicNewsRecipe class DerStandardRecipe(BasicNewsRecipe): title = u'derStandard' - __author__ = 'Gerhard Aigner and Sujata Raman' - description = u'Nachrichten aus ??sterreich' + __author__ = 'Gerhard Aigner and Sujata Raman and Marcel Jira' + description = u'Nachrichten aus Österreich' publisher ='derStandard.at' category = 'news, politics, nachrichten, Austria' use_embedded_content = False @@ -30,17 +30,26 @@ class DerStandardRecipe(BasicNewsRecipe): h4{color:#404450;font-size:x-small;} h6{color:#404450; font-size:x-small;} ''' - feeds = [(u'International', u'http://derstandard.at/?page=rss&ressort=internationalpolitik'), - (u'Inland', u'http://derstandard.at/?page=rss&ressort=innenpolitik'), - (u'Wirtschaft', u'http://derstandard.at/?page=rss&ressort=investor'), - (u'Web', u'http://derstandard.at/?page=rss&ressort=webstandard'), - (u'Sport', u'http://derstandard.at/?page=rss&ressort=sport'), - (u'Panorama', u'http://derstandard.at/?page=rss&ressort=panorama'), - (u'Etat', u'http://derstandard.at/?page=rss&ressort=etat'), - (u'Kultur', u'http://derstandard.at/?page=rss&ressort=kultur'), - (u'Wissenschaft', u'http://derstandard.at/?page=rss&ressort=wissenschaft'), - (u'Gesundheit', u'http://derstandard.at/?page=rss&ressort=gesundheit'), - (u'Bildung', u'http://derstandard.at/?page=rss&ressort=subildung') + feeds = [ + (u'Newsroom', u'http://derStandard.at/?page=rss&ressort=Seite1'), + (u'Inland', u'http://derstandard.at/?page=rss&ressort=InnenPolitik'), + (u'International', u'http://derstandard.at/?page=rss&ressort=InternationalPolitik'), + (u'Wirtschaft', u'http://derStandard.at/?page=rss&ressort=Wirtschaft'), + (u'Web', u'http://derStandard.at/?page=rss&ressort=Web'), + (u'Sport', u'http://derStandard.at/?page=rss&ressort=Sport'), + (u'Panorama', u'http://derStandard.at/?page=rss&ressort=Panorama'), + (u'Etat', u'http://derStandard.at/?page=rss&ressort=Etat'), + (u'Kultur', u'http://derStandard.at/?page=rss&ressort=Kultur'), + (u'Wissenschaft', u'http://derStandard.at/?page=rss&ressort=Wissenschaft'), + (u'Gesundheit', u'http://derStandard.at/?page=rss&ressort=Gesundheit'), + (u'Bildung', u'http://derStandard.at/?page=rss&ressort=Bildung'), + (u'Meinung', u'http://derStandard.at/?page=rss&ressort=Meinung'), + (u'Lifestyle', u'http://derStandard.at/?page=rss&ressort=Lifestyle'), + (u'Reisen', u'http://derStandard.at/?page=rss&ressort=Reisen'), + (u'Karriere', u'http://derStandard.at/?page=rss&ressort=Karriere'), + (u'Immobilien', u'http://derstandard.at/?page=rss&ressort=Immobilien'), + (u'dieStandard', u'http://dieStandard.at/?page=rss&ressort=diestandard'), + (u'daStandard', u'http://daStandard.at/?page=rss&ressort=dastandard') ] keep_only_tags = [ diff --git a/recipes/diagonal.recipe b/recipes/diagonal.recipe new file mode 100644 index 0000000000..20f6f7fec2 --- /dev/null +++ b/recipes/diagonal.recipe @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +__license__ = 'GPL v3' +__copyright__ = 'Ruben Pollan ' +__docformat__ = 'restructuredtext en' + +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1335657507(BasicNewsRecipe): + title = u'diagonal' + __author__ = 'Ruben Pollan' + description = 'Periodico quincenal de actualidad critica' + language = 'es' + + oldest_article = 15 + max_articles_per_feed = 100 + auto_cleanup = True + cover_url = u'http://diagonalperiodico.net/IMG/siteon0.jpg' + + feeds = [(u'Panorama', u'http://diagonalperiodico.net/-Panorama-.html?page=backend'), + (u'Global', u'http://diagonalperiodico.net/-Global,104-.html?page=backend'), + (u'Fotonoticia - Galería', u'http://diagonalperiodico.net/-Fotonoticia-Galeria-.html?page=backend'), + (u'Libertades y Derechos', u'http://diagonalperiodico.net/-Libertades-y-Derechos,77-.html?page=backend'), + (u'Saberes', u'http://diagonalperiodico.net/-Saberes,78-.html?page=backend'), + (u'En movimiento', u'http://diagonalperiodico.net/-En-movimiento-.html?page=backend'), + (u'Culturas', u'http://diagonalperiodico.net/-Culturas,89-.html?page=backend'), + (u'Cuerpo', u'http://diagonalperiodico.net/-Cuerpo,99-.html?page=backend'), + (u'La plaza', u'http://diagonalperiodico.net/-La-plaza-.html?page=backend'), + (u'Enfoques', u'http://diagonalperiodico.net/-Enfoques,106-.html?page=backend'), + (u'Humor - Galería', u'http://diagonalperiodico.net/-Humor-Galeria-.html?page=backend'), + (u'Entrevistas digitales', u'http://diagonalperiodico.net/-Entrevistas-Digitales-.html?page=backend'), + (u'Cartas a diagonal', u'http://diagonalperiodico.net/-Cartas-a-Diagonal-.html?page=backend'), + (u'Blogs', u'http://diagonalperiodico.net/-Blogs-.html?page=backend')] + + def get_article_url(self, article): + link = article.get('link') + return 'http://diagonalperiodico.net/' + link diff --git a/recipes/dobreprogamy.recipe b/recipes/dobreprogamy.recipe index a27a9b0877..0614cf98ee 100644 --- a/recipes/dobreprogamy.recipe +++ b/recipes/dobreprogamy.recipe @@ -11,6 +11,7 @@ class Dobreprogramy_pl(BasicNewsRecipe): cover_url = 'http://userlogos.org/files/logos/Karmody/dobreprogramy_01.png' description = u'Aktualności i blogi z dobreprogramy.pl' encoding = 'utf-8' + index='http://www.dobreprogramy.pl/' no_stylesheets = True language = 'pl' extra_css = '.title {font-size:22px;}' @@ -22,3 +23,10 @@ class Dobreprogramy_pl(BasicNewsRecipe): #remove_tags = [dict(name='div', attrs={'class':['komentarze', 'block', 'portalInfo', 'menuBar', 'topBar']})] feeds = [(u'Aktualności', 'http://feeds.feedburner.com/dobreprogramy/Aktualnosci'), ('Blogi', 'http://feeds.feedburner.com/dobreprogramy/BlogCzytelnikow')] + + + def preprocess_html(self, soup): + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] + return soup \ No newline at end of file diff --git a/recipes/dzieje_pl.recipe b/recipes/dzieje_pl.recipe index d80161e71a..4c583e4815 100644 --- a/recipes/dzieje_pl.recipe +++ b/recipes/dzieje_pl.recipe @@ -7,6 +7,7 @@ class Dzieje(BasicNewsRecipe): cover_url = 'http://www.dzieje.pl/sites/default/files/dzieje_logo.png' category = 'history' language = 'pl' + index='http://dzieje.pl' oldest_article = 8 max_articles_per_feed = 100 remove_javascript=True @@ -15,3 +16,10 @@ class Dzieje(BasicNewsRecipe): remove_tags_after= dict(id='dogory') remove_tags=[dict(id='dogory')] feeds = [(u'Dzieje', u'http://dzieje.pl/rss.xml')] + + + def preprocess_html(self, soup): + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] + return soup \ No newline at end of file diff --git a/recipes/editoriali.recipe b/recipes/editoriali.recipe new file mode 100644 index 0000000000..1b0c558df4 --- /dev/null +++ b/recipes/editoriali.recipe @@ -0,0 +1,16 @@ +__version__ = 'v1.0' +__date__ = '7, April 2012' + +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1332847053(BasicNewsRecipe): + title = u'Editoriali' + __author__ = 'faber1971' + description = 'Leading articles on Italy by the best Italian editorials' + + oldest_article = 1 + max_articles_per_feed = 100 + auto_cleanup = True + conversion_options = {'linearize_tables': True} + masthead_url = 'http://folkbulletin.folkest.com/wp-content/uploads/editoriale1.jpg' + feeds = [(u'Micromega', u'http://temi.repubblica.it/micromega-online/feed/'), (u'Corriere della Sera', u'http://xml.corriereobjects.it/rss/editoriali.xml'), (u'La Stampa', u'http://www.lastampa.it/cmstp/rubriche/oggetti/rss.asp?ID_blog=25'), (u"Italia dall'estero", u'http://italiadallestero.info/feed')] diff --git a/recipes/eioba.recipe b/recipes/eioba.recipe index 14256c5811..1df79d64bd 100644 --- a/recipes/eioba.recipe +++ b/recipes/eioba.recipe @@ -21,3 +21,8 @@ class eioba(BasicNewsRecipe): (u'Rozrywka', u'http://www.eioba.pl/feed/categories/10.xml'), (u'Rożne', u'http://www.eioba.pl/feed/categories/9.xml') ] + + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + return soup diff --git a/recipes/el_mundo_today.recipe b/recipes/el_mundo_today.recipe new file mode 100644 index 0000000000..77a9f331a0 --- /dev/null +++ b/recipes/el_mundo_today.recipe @@ -0,0 +1,21 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class ElMundoTodayRecipe(BasicNewsRecipe): + title = 'El Mundo Today' + __author__ = 'atordo' + description = u'La actualidad del mañana' + category = 'Noticias, humor' + cover_url = 'http://www.elmundotoday.com/wp-content/themes/EarthlyTouch/images/logo.png' + oldest_article = 30 + max_articles_per_feed = 30 + auto_cleanup = True + no_stylesheets = True + language = 'es' + use_embedded_content = True + + feeds = [('El Mundo Today', 'http://www.elmundotoday.com/feed/')] + + def get_broser(self): + br = BasicNewsRecipe.get_browser(self) + br.set_handle_gzip(True) + return br diff --git a/recipes/emuzica_pl.recipe b/recipes/emuzica_pl.recipe index 75271c510a..2fbf9ff514 100644 --- a/recipes/emuzica_pl.recipe +++ b/recipes/emuzica_pl.recipe @@ -7,6 +7,7 @@ class eMuzyka(BasicNewsRecipe): description = u'Emuzyka to największa i najpopularniejsza strona o muzyce w Polsce' category = 'music' language = 'pl' + index='http://www.emuzyka.pl' cover_url='http://s.emuzyka.pl/img/emuzyka_invert_small.jpg' no_stylesheets = True oldest_article = 7 @@ -14,3 +15,9 @@ class eMuzyka(BasicNewsRecipe): keep_only_tags=[dict(name='div', attrs={'id':'news_container'}), dict(name='h3'), dict(name='div', attrs={'class':'review_text'})] remove_tags=[dict(name='span', attrs={'id':'date'})] feeds = [(u'Aktualno\u015bci', u'http://www.emuzyka.pl/rss.php?f=1'), (u'Recenzje', u'http://www.emuzyka.pl/rss.php?f=2')] + + def preprocess_html(self, soup): + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] + return soup \ No newline at end of file diff --git a/recipes/fhm_uk.recipe b/recipes/fhm_uk.recipe index 0e2d5c1ebe..07f2b4b64e 100644 --- a/recipes/fhm_uk.recipe +++ b/recipes/fhm_uk.recipe @@ -7,7 +7,7 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe): # cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/373529_38324934806_64930243_n.jpg' masthead_url = 'http://www.fhm.com/App_Resources/Images/Site/re-design/logo.gif' __author__ = 'Dave Asbury' - # last updated 17/3/12 + # last updated 14/4/12 language = 'en_GB' oldest_article = 28 max_articles_per_feed = 12 @@ -28,7 +28,8 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe): #] feeds = [ - (u'From the Homepage',u'http://feed43.com/8053226782885416.xml'), + (u'From the Homepage',u'http://feed43.com/0032328550253453.xml'), + #http://feed43.com/8053226782885416.xml'), (u'Funny - The Very Best Of The Internet',u'http://feed43.com/4538510106331565.xml'), (u'Upgrade',u'http://feed43.com/0877305847443234.xml'), #(u'The Final Countdown', u'http://feed43.com/3576106158530118.xml'), diff --git a/recipes/film_web.recipe b/recipes/film_web.recipe index 877d4472bc..2a6e00d501 100644 --- a/recipes/film_web.recipe +++ b/recipes/film_web.recipe @@ -7,6 +7,7 @@ class Filmweb_pl(BasicNewsRecipe): cover_url = 'http://userlogos.org/files/logos/crudus/filmweb.png' category = 'movies' language = 'pl' + index='http://www.filmweb.pl' oldest_article = 8 max_articles_per_feed = 100 no_stylesheets= True @@ -39,3 +40,9 @@ class Filmweb_pl(BasicNewsRecipe): self.log.warn(skip_tag) return self.index_to_soup(skip_tag['href'], raw=True) + + def preprocess_html(self, soup): + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] + return soup \ No newline at end of file diff --git a/recipes/forbes.recipe b/recipes/forbes.recipe index a633d0f543..fe72fda536 100644 --- a/recipes/forbes.recipe +++ b/recipes/forbes.recipe @@ -1,39 +1,49 @@ -from calibre.ebooks.BeautifulSoup import BeautifulSoup +import re from calibre.web.feeds.news import BasicNewsRecipe class Forbes(BasicNewsRecipe): title = u'Forbes' description = 'Business and Financial News' - __author__ = 'Darko Miletic' + __author__ = 'Kovid Goyal' oldest_article = 30 - max_articles_per_feed = 100 + max_articles_per_feed = 20 language = 'en' + encoding = 'utf-8' + recursions = 1 no_stylesheets = True - html2lrf_options = ['--base-font-size', '10'] cover_url = u'http://www.forbes.com/media/current_covers/forbes_120_160.gif' - - feeds = [(u'Latest', u'http://www.forbes.com/news/index.xml'), - (u'Most Popular', u'http://www.forbes.com/feeds/popstories.xml'), - (u'Most Emailed', u'http://www.forbes.com/feeds/mostemailed.xml'), - (u'Faces', u'http://www.forbes.com/facesscan/index.xml'), - (u'Technology', u'http://www.forbes.com/technology/index.xml'), - (u'Personal Tech', u'http://www.forbes.com/personaltech/index.xml'), - (u'Wireless', u'http://www.forbes.com/wireless/index.xml'), - (u'Business', u'http://www.forbes.com/business/index.xml'), - (u'Sports Money', u'http://www.forbes.com/sportsmoney/index.xml'), - (u'Sports', u'http://www.forbes.com/forbeslife/sports/index.xml'), - (u'Vehicles', u'http://www.forbes.com/forbeslife/vehicles/index.xml'), - (u'Leadership', u'http://www.forbes.com/leadership/index.xml'), - (u'Careers', u'http://www.forbes.com/leadership/careers/index.xml'), - (u'Compensation', u'http://www.forbes.com/leadership/compensation/index.xml'), - (u'Managing', u'http://www.forbes.com/leadership/managing/index.xml')] - def print_version(self, url): - raw = self.browser.open(url).read() - soup = BeautifulSoup(raw.decode('latin1', 'replace')) - print_link = soup.find('a', {'onclick':"s_linkTrackVars='prop18';s_linkType='o';s_linkName='Print';if(typeof(globalPageName)!='undefined')s_prop18=globalPageName;s_lnk=s_co(this);s_gs(s_account);"}) - if print_link is None: - return '' - return 'http://www.forbes.com' + print_link['href'] \ No newline at end of file + feeds = [(u'Latest', u'http://www.forbes.com/news/index.xml'), + (u'Most Popular', u'http://www.forbes.com/feeds/popstories.xml'), + (u'Technology', u'http://www.forbes.com/technology/index.xml'), + (u'Business', u'http://www.forbes.com/business/index.xml'), + (u'Sports Money', u'http://www.forbes.com/sportsmoney/index.xml'), + (u'Leadership', u'http://www.forbes.com/leadership/index.xml'),] + + keep_only_tags = \ + {'class':lambda x: x and (set(x.split()) & {'body', 'pagination', + 'articleHead', 'article_head'})} + remove_tags_before = {'name':'h1'} + remove_tags = [ + {'class':['comment_bug', 'engagement_block', + 'video_promo_block', 'article_actions']}, + {'id':'comments'} + ] + + def is_link_wanted(self, url, tag): + ans = re.match(r'http://.*/[2-9]/', url) is not None + if ans: + self.log('Following multipage link: %s'%url) + return ans + + def postprocess_html(self, soup, first_fetch): + for pag in soup.findAll(True, 'pagination'): + pag.extract() + if not first_fetch: + h1 = soup.find('h1') + if h1 is not None: + h1.extract() + return soup + diff --git a/recipes/fotoblogia_pl.recipe b/recipes/fotoblogia_pl.recipe new file mode 100644 index 0000000000..99df46419a --- /dev/null +++ b/recipes/fotoblogia_pl.recipe @@ -0,0 +1,16 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class Fotoblogia_pl(BasicNewsRecipe): + title = u'Fotoblogia.pl' + __author__ = 'fenuks' + category = 'photography' + language = 'pl' + masthead_url = 'http://img.interia.pl/komputery/nimg/u/0/fotoblogia21.jpg' + cover_url= 'http://fotoblogia.pl/images/2009/03/fotoblogia2.jpg' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + use_embedded_content = False + keep_only_tags=[dict(name='div', attrs={'class':'post-view post-standard'})] + remove_tags=[dict(attrs={'class':['external fotoblogia', 'categories', 'tags']})] + feeds = [(u'Wszystko', u'http://fotoblogia.pl/feed/rss2')] diff --git a/recipes/gameplay_pl.recipe b/recipes/gameplay_pl.recipe index f3384263d6..7b0ccb4f55 100644 --- a/recipes/gameplay_pl.recipe +++ b/recipes/gameplay_pl.recipe @@ -6,16 +6,24 @@ class Gameplay_pl(BasicNewsRecipe): description = u'gameplay.pl - serwis o naszych zainteresowaniach, grach, filmach, książkach, muzyce, fotografii i konsolach.' category = 'games, movies, books, music' language = 'pl' + index='http://gameplay.pl' masthead_url= 'http://gameplay.pl/img/gpy_top_logo.png' cover_url= 'http://gameplay.pl/img/gpy_top_logo.png' max_articles_per_feed = 100 + remove_javascript= True no_stylesheets= True keep_only_tags=[dict(name='div', attrs={'class':['news_endpage_tit', 'news']})] - remove_tags=[dict(name='div', attrs={'class':['galeria', 'noedit center im']})] + remove_tags=[dict(name='div', attrs={'class':['galeria', 'noedit center im', 'news_list', 'news_list_autor', 'stop_bot', 'tagi']}), dict(attrs={'usemap':'#map'})] feeds = [(u'Wiadomo\u015bci', u'http://gameplay.pl/rss/')] def image_url_processor(self, baseurl, url): if 'http' not in url: return 'http://gameplay.pl'+ url[2:] else: - return url + return url + + def preprocess_html(self, soup): + for a in soup('a'): + if a.has_key('href') and '../' in a['href']: + a['href']=self.index + a['href'][2:] + return soup \ No newline at end of file diff --git a/recipes/gildia_pl.recipe b/recipes/gildia_pl.recipe index 042902b5fc..36d3ef4da2 100644 --- a/recipes/gildia_pl.recipe +++ b/recipes/gildia_pl.recipe @@ -9,6 +9,7 @@ class Gildia(BasicNewsRecipe): language = 'pl' oldest_article = 8 max_articles_per_feed = 100 + remove_empty_feeds=True no_stylesheets=True remove_tags=[dict(name='div', attrs={'class':'backlink'}), dict(name='div', attrs={'class':'im_img'}), dict(name='div', attrs={'class':'addthis_toolbox addthis_default_style'})] keep_only_tags=dict(name='div', attrs={'class':'widetext'}) @@ -24,3 +25,16 @@ class Gildia(BasicNewsRecipe): self.log.warn('odnosnik') self.log.warn(link['href']) return self.index_to_soup(link['href'], raw=True) + + def preprocess_html(self, soup): + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + if '/gry/' in a['href']: + a['href']='http://www.gry.gildia.pl' + a['href'] + elif u'książk' in soup.title.string.lower() or u'komiks' in soup.title.string.lower(): + a['href']='http://www.literatura.gildia.pl' + a['href'] + elif u'komiks' in soup.title.string.lower(): + a['href']='http://www.literatura.gildia.pl' + a['href'] + else: + a['href']='http://www.gildia.pl' + a['href'] + return soup diff --git a/recipes/gram_pl.recipe b/recipes/gram_pl.recipe index 07927796c0..1f8147ba3d 100644 --- a/recipes/gram_pl.recipe +++ b/recipes/gram_pl.recipe @@ -7,6 +7,7 @@ class Gram_pl(BasicNewsRecipe): category = 'games' language = 'pl' oldest_article = 8 + index='http://www.gram.pl' max_articles_per_feed = 100 no_stylesheets= True extra_css = 'h2 {font-style: italic; font-size:20px;} .picbox div {float: left;}' @@ -52,4 +53,7 @@ class Gram_pl(BasicNewsRecipe): tag=soup.findAll(name='div', attrs={'class':'picbox'}) for t in tag: t['style']='float: left;' + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] return soup \ No newline at end of file diff --git a/recipes/heise.recipe b/recipes/heise.recipe index 56d5516656..ba93ea96ce 100644 --- a/recipes/heise.recipe +++ b/recipes/heise.recipe @@ -59,6 +59,7 @@ class heiseDe(BasicNewsRecipe): dict(name='span', attrs={'class':'rsaquo'}), dict(name='div', attrs={'class':'news_logo'}), dict(name='div', attrs={'class':'bcadv ISI_IGNORE'}), + dict(name='div', attrs={'class':'navi_top_container'}), dict(name='p', attrs={'class':'news_option'}), dict(name='p', attrs={'class':'news_navi'}), dict(name='div', attrs={'class':'news_foren'})] @@ -69,3 +70,5 @@ class heiseDe(BasicNewsRecipe): + + diff --git a/recipes/historia_news.recipe b/recipes/historia_news.recipe new file mode 100644 index 0000000000..4eca8ade91 --- /dev/null +++ b/recipes/historia_news.recipe @@ -0,0 +1,20 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class historia_news(BasicNewsRecipe): + title = u'historia-news' + __author__ = 'fenuks' + description = u'Historia-news to portal dla ludzi kochających historię. Najnowsze newsy z historii bliższej i dalszej, archeologii, paleontologii oraz ciekawostki i podcasty z historii kultury, sportu, motoryzacji i inne.' + masthead_url = 'http://historia-news.pl/templates/hajak4/images/header.jpg' + cover_url= 'http://www.historia-news.pl/templates/hajak4/images/header.jpg' + category = 'history' + language = 'pl' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + remove_empty_feeds = True + remove_tags=[dict(name='form'), dict(name='img', attrs={'alt':'Print'}), dict(attrs={'class':['commbutt', 'cpr']}), dict(id=['plusone', 'facebook'])] + feeds = [(u'Wiadomo\u015bci', u'http://historia-news.pl/wiadomoci.feed?type=rss'), (u'Artyku\u0142y', u'http://historia-news.pl/artykuy.feed?type=rss')] + + + def print_version(self, url): + return url + '?tmpl=component&print=1&layout=default&page=' diff --git a/recipes/icons/ba_herald.png b/recipes/icons/ba_herald.png new file mode 100644 index 0000000000..2b02a4ae93 Binary files /dev/null and b/recipes/icons/ba_herald.png differ diff --git a/recipes/icons/fotoblogia_pl.png b/recipes/icons/fotoblogia_pl.png new file mode 100644 index 0000000000..0204a04e62 Binary files /dev/null and b/recipes/icons/fotoblogia_pl.png differ diff --git a/recipes/icons/historia_news.png b/recipes/icons/historia_news.png new file mode 100644 index 0000000000..79b1b52859 Binary files /dev/null and b/recipes/icons/historia_news.png differ diff --git a/recipes/icons/swiat_obrazu.png b/recipes/icons/swiat_obrazu.png new file mode 100644 index 0000000000..a61662a864 Binary files /dev/null and b/recipes/icons/swiat_obrazu.png differ diff --git a/recipes/icons/telam.png b/recipes/icons/telam.png new file mode 100644 index 0000000000..f86dcc1dbf Binary files /dev/null and b/recipes/icons/telam.png differ diff --git a/recipes/in4_pl.recipe b/recipes/in4_pl.recipe index 16ad622b46..e385522714 100644 --- a/recipes/in4_pl.recipe +++ b/recipes/in4_pl.recipe @@ -8,6 +8,7 @@ class in4(BasicNewsRecipe): description = u'Serwis Informacyjny - Aktualnosci, recenzje' category = 'IT' language = 'pl' + index='http://www.in4.pl/' #cover_url= 'http://www.in4.pl/recenzje/337/in4pl.jpg' no_stylesheets = True remove_empty_feeds = True @@ -39,6 +40,7 @@ class in4(BasicNewsRecipe): def preprocess_html(self, soup): self.append_page(soup, soup.body) + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] return soup - - diff --git a/recipes/infra_pl.recipe b/recipes/infra_pl.recipe index 0e035e0980..e021fa0c17 100644 --- a/recipes/infra_pl.recipe +++ b/recipes/infra_pl.recipe @@ -8,6 +8,7 @@ class INFRA(BasicNewsRecipe): description = u'Serwis Informacyjny INFRA - UFO, Zjawiska Paranormalne, Duchy, Tajemnice świata.' cover_url = 'http://npn.nazwa.pl/templates/ja_teline_ii/images/logo.jpg' category = 'UFO' + index='http://infra.org.pl' language = 'pl' max_articles_per_feed = 100 no_stylesheers=True @@ -15,3 +16,11 @@ class INFRA(BasicNewsRecipe): remove_tags_after=dict(attrs={'class':'pagenav'}) remove_tags=[dict(attrs={'class':'pagenav'})] feeds = [(u'Najnowsze wiadomo\u015bci', u'http://www.infra.org.pl/index.php?option=com_rd_rss&id=1')] + + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] + return soup \ No newline at end of file diff --git a/recipes/jakarta_globe.recipe b/recipes/jakarta_globe.recipe new file mode 100644 index 0000000000..1414ac6e5b --- /dev/null +++ b/recipes/jakarta_globe.recipe @@ -0,0 +1,34 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class JakartaGlobe(BasicNewsRecipe): + title = u'Jakarta Globe' + oldest_article = 3 + max_articles_per_feed = 100 + + feeds = [ + (u'News', u'http://www.thejakartaglobe.com/pages/getrss/getrss-news.php'), + (u'Business', u'http://www.thejakartaglobe.com/pages/getrss/getrss-business.php'), + (u'Technology', u'http://www.thejakartaglobe.com/pages/getrss/getrss-tech.php'), + (u'My Jakarta', u'http://www.thejakartaglobe.com/pages/getrss/getrss-myjakarta.php'), + (u'International', u'http://www.thejakartaglobe.com/pages/getrss/getrss-international.php'), + (u'Life and Times', u'http://www.thejakartaglobe.com/pages/getrss/getrss-lifeandtimes.php'), + ] + __author__ = 'rty' + pubisher = 'JakartaGlobe.com' + description = 'JakartaGlobe, Indonesia, Newspaper' + category = 'News, Indonesia' + + + remove_javascript = True + use_embedded_content = False + no_stylesheets = True + language = 'en_ID' + encoding = 'utf-8' + conversion_options = {'linearize_tables':True} + masthead_url = 'http://www.thejakartaglobe.com/pages/2010/images/jak-globe-logo.jpg' + keep_only_tags = [ + dict(name='div', attrs={'class':'story'}), + dict(name='span', attrs={'class':'headline'}), + dict(name='div', attrs={'class':'story'}), + dict(name='p', attrs={'id':'bodytext'}) + ] diff --git a/recipes/konflikty_zbrojne.recipe b/recipes/konflikty_zbrojne.recipe index 7921e98f48..e8b28b49bf 100644 --- a/recipes/konflikty_zbrojne.recipe +++ b/recipes/konflikty_zbrojne.recipe @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ebooks.BeautifulSoup import BeautifulSoup class Konflikty(BasicNewsRecipe): title = u'Konflikty Zbrojne' @@ -10,6 +11,23 @@ class Konflikty(BasicNewsRecipe): category='military, history' oldest_article = 7 max_articles_per_feed = 100 - auto_cleanup = True + no_stylesheets = True + keep_only_tags=[dict(attrs={'class':['title1', 'image']}), dict(id='body')] - feeds = [(u'Aktualności', u'http://www.konflikty.pl/rss_aktualnosci_10.xml'), (u'Artyku\u0142y', u'http://www.konflikty.pl/rss_artykuly_10.xml'), (u'Relacje', u'http://www.konflikty.pl/rss_relacje_10.xml'), (u'Recenzje', u'http://www.konflikty.pl/rss_recenzje_10.xml')] + feeds = [(u'Aktualności', u'http://www.konflikty.pl/rss_aktualnosci_10.xml'), + (u'Artyku\u0142y', u'http://www.konflikty.pl/rss_artykuly_10.xml'), + (u'Historia', u'http://www.konflikty.pl/rss_historia_10.xml'), + (u'Militaria', u'http://www.konflikty.pl/rss_militaria_10.xml'), + (u'Relacje', u'http://www.konflikty.pl/rss_relacje_10.xml'), + (u'Recenzje', u'http://www.konflikty.pl/rss_recenzje_10.xml'), + (u'Teksty źródłowe', u'http://www.konflikty.pl/rss_tekstyzrodlowe_10.xml')] + + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + for image in soup.findAll(name='a', attrs={'class':'image'}): + if image.img and image.img.has_key('alt'): + image.name='div' + pos = len(image.contents) + image.insert(pos, BeautifulSoup('

'+image.img['alt']+'

')) + return soup diff --git a/recipes/liberatorio_politico.recipe b/recipes/liberatorio_politico.recipe new file mode 100644 index 0000000000..bbffcd89b1 --- /dev/null +++ b/recipes/liberatorio_politico.recipe @@ -0,0 +1,12 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1334649829(BasicNewsRecipe): + title = u'Liberatorio Politico' + oldest_article = 7 + max_articles_per_feed = 100 + auto_cleanup = True + masthead_url = 'http://liberatorio.altervista.org/wp-content/uploads/2012/01/Testata-LIBERATORIO-Altervista1.jpg' + feeds = [(u'Liberatorio Politico', u'http://liberatorio.altervista.org/feed/')] + __author__ = 'faber1971' + description = 'Inquiry journalism - a blog on Molfetta, Land of Bari, Apulia and Italy - v1.00 (07, April 2012)' + language = 'it' diff --git a/recipes/limes.recipe b/recipes/limes.recipe new file mode 100644 index 0000000000..2290b7099e --- /dev/null +++ b/recipes/limes.recipe @@ -0,0 +1,50 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__copyright__ = '2012, faber1971' +__version__ = 'v1.00' +__date__ = '16, April 2012' +__description__ = 'Geopolitical Italian magazine' + + +from calibre.web.feeds.news import BasicNewsRecipe + +class Limes(BasicNewsRecipe): + description = 'Italian weekly magazine' + __author__ = 'faber1971' + + cover_url = 'http://temi.repubblica.it/UserFiles/limes/Image/Loghi/logo-limes.gif' + title = 'Limes' + category = 'Geopolitical news' + + language = 'it' +# encoding = 'cp1252' + timefmt = '[%a, %d %b, %Y]' + + oldest_article = 16 + max_articles_per_feed = 100 + use_embedded_content = False + recursion = 10 + + remove_javascript = True + no_stylesheets = True + masthead_url = 'http://temi.repubblica.it/UserFiles/limes/Image/Loghi/logo-limes.gif' + + feeds = [ + (u'Limes', u'http://temi.repubblica.it/limes/feed/') + ] + + + + keep_only_tags = [ + dict(name='div', attrs={'class':['testo','copertina','occhiello','firma','didascalia','content-second-right','detail-articles','titolo-local','generic-articles']}), + dict(name='div', attrs={'class':['generic-articles','summary','detail-articles']}), + dict(name='div', attrs={'id':['content-second-right','content2']}) + ] + + remove_tags = [ + dict(name='div',attrs={'class':['servizi','aggiungi','label-web','bottom-mobile','box-abbonamenti','box-cerca','big','little','stampaweb']}), + dict(name='div',attrs={'id':['topheader','header','navigation-new','navigation','content-second-left','menutext']}), + dict(name='ul',attrs={'id':'user-utility'}), + dict(name=['script','noscript','iframe']) + ] + diff --git a/recipes/marketing_magazine.recipe b/recipes/marketing_magazine.recipe index bdec85a0ce..d004f274af 100644 --- a/recipes/marketing_magazine.recipe +++ b/recipes/marketing_magazine.recipe @@ -1,11 +1,13 @@ __license__ = 'GPL v3' __author__ = 'faber1971' -description = 'Collection of Italian marketing websites - v1.04 (17, March 2012)' from calibre.web.feeds.news import BasicNewsRecipe class AdvancedUserRecipe1327062445(BasicNewsRecipe): title = u'Marketing Magazine' + description = 'Collection of Italian marketing websites' + language = 'it' + __author__ = 'faber1971' oldest_article = 7 max_articles_per_feed = 100 auto_cleanup = True @@ -16,4 +18,4 @@ class AdvancedUserRecipe1327062445(BasicNewsRecipe): dict(name='ul', attrs={'id':'ads0'}) ] masthead_url = 'http://www.simrendeogun.com/wp-content/uploads/2011/06/New-Marketing-Magazine-Logo.jpg' - feeds = [(u'My Marketing', u'http://feed43.com/0537744466058428.xml'), (u'My Marketing_', u'http://feed43.com/8126723074604845.xml'), (u'Venturini', u'http://robertoventurini.blogspot.com/feeds/posts/default?alt=rss'), (u'Ninja Marketing', u'http://feeds.feedburner.com/NinjaMarketing'), (u'Comunitàzione', u'http://www.comunitazione.it/feed/novita.asp'), (u'Brandforum news', u'http://www.brandforum.it/rss/news'), (u'Brandforum papers', u'http://www.brandforum.it/rss/papers'), (u'MarketingArena', u'http://feeds.feedburner.com/marketingarena'), (u'minimarketing', u'http://feeds.feedburner.com/minimarketingit'), (u'Marketing Journal', u'http://feeds.feedburner.com/marketingjournal/jPwA'), (u'Disambiguando', u'http://giovannacosenza.wordpress.com/feed/')] + feeds = [(u'My Marketing', u'http://feed43.com/0537744466058428.xml'), (u'My Marketing_', u'http://feed43.com/8126723074604845.xml'), (u'MarketingArena', u'http://feeds.feedburner.com/marketingarena'), (u'Marketing Journal', u'http://feeds.feedburner.com/marketingjournal/jPwA'), (u'Venturini', u'http://robertoventurini.blogspot.com/feeds/posts/default?alt=rss'), (u'Brandforum news', u'http://www.brandforum.it/rss/news'), (u'Brandforum papers', u'http://www.brandforum.it/rss/papers'), (u'minimarketing', u'http://feeds.feedburner.com/minimarketingit'), (u'[4]marketing.biz', u'http://feeds.feedburner.com/4marketing'), (u'Ninja Marketing', u'http://feeds.feedburner.com/NinjaMarketing'), (u'Bloguerrilla', u'http://feeds.feedburner.com/Bloguerrilla'), (u'Nonconvenzionale', u'http://feeds.feedburner.com/nonconvenzionale'), (u'Comunitàzione', u'http://www.comunitazione.it/feed/novita.asp'), (u'Disambiguando', u'http://giovannacosenza.wordpress.com/feed/')] diff --git a/recipes/max_planck.recipe b/recipes/max_planck.recipe index cf778a7374..e87aa4bb23 100644 --- a/recipes/max_planck.recipe +++ b/recipes/max_planck.recipe @@ -1,24 +1,32 @@ from calibre.web.feeds.recipes import BasicNewsRecipe class AdvancedUserRecipe1303841067(BasicNewsRecipe): - title = u'Max-Planck-Inst.' - __author__ = 'schuster' - oldest_article = 30 - max_articles_per_feed = 100 + title = u'Max-Planck-Gesellschaft' + description = 'Forschungs-News-Feed der Max-Planck-Gesellschaft' + __author__ = 'schuster, a.peter' + __license__ = 'GPL v3' + version = 2 + + oldest_article = 30 + max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False language = 'de' remove_javascript = True + timefmt = ' [%d.%m.%Y]' remove_tags = [dict(attrs={'class':['box_url', 'print_kontakt']}), - dict(id=['skiplinks'])] - - + dict(id=['skiplinks']), + dict(name='div', attrs={'id':['print_options','print_head']}), + dict(name='div', attrs={'class':['col2_box_meta']}), + dict(name='a', attrs={'class':['toggle_description']}), + dict(name='span', attrs={'class':['lens']})] def print_version(self, url): - split_url = url.split("/") - print_url = 'http://www.mpg.de/print/' + split_url[3] + print_url = url + '?print=yes' return print_url - feeds = [(u'Forschung', u'http://www.mpg.de/de/forschung.rss')] + feeds = [(u'Forschung', u'http://www.mpg.de/de/forschung.rss')] + def get_masthead_url(self): + return 'http://www.mpg.de/images/logo_print.png' diff --git a/recipes/melbourne_herald_sun.recipe b/recipes/melbourne_herald_sun.recipe new file mode 100644 index 0000000000..c24a4563af --- /dev/null +++ b/recipes/melbourne_herald_sun.recipe @@ -0,0 +1,85 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__copyright__ = '2009, Matthew Briggs' +__docformat__ = 'restructuredtext en' + +''' +http://www.herald sun.com.au/ +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class DailyTelegraph(BasicNewsRecipe): + title = u'Melbourne Herald Sun' + __author__ = u'Ray Hartley' + description = (u'Victorian and National News' + '. You will need to have a subscription to ' + 'http://www.heraldsun.com.au to get full articles.') + language = 'en_AU' + + oldest_article = 2 + needs_subscription = 'optional' + max_articles_per_feed = 30 + remove_javascript = True + no_stylesheets = True + encoding = 'utf8' + use_embedded_content = False + language = 'en_AU' + remove_empty_feeds = True + publication_type = 'newspaper' + masthead_url = 'http://resources2.news.com.au/cs/heraldsun/images/header-and-footer/logo.gif' + extra_css = """ + body{font-family: Arial,Helvetica,sans-serif } + img{margin-bottom: 0.4em; display:block} + .caption{display: inline; font-size: x-small} + """ + + conversion_options = { + 'comment' : description + , 'language' : language + } + + keep_only_tags = [dict(attrs={'id':'story'})] + remove_tags_before=dict(attrs={'class':'story-header'}) + remove_tags_after=dict(attrs={'class':'story-footer'}) + remove_tags = [ + dict(name=['meta','link','base','iframe','embed','object','media-metadata','media-reference','media-producer']) + ,dict(attrs={'class':['story-header-tools','story-sidebar','story-footer','story-summary-list']}) + ] + remove_attributes=['lang'] + + + feeds = [(u'Breaking News' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_breakingnews_206.xml' ) + ,(u'Business' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_business_207.xml' ) + ,(u'Entertainment' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_entertainment_208.xml' ) + ,(u'Health Science' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_health_212.xml' ) + ,(u'Music' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_music_449.xml' ) + ,(u'National News' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_national_209.xml' ) + ,(u'Sport News' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_sport_213.xml' ) + ,(u'AFL News' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_afl_205.xml' ) + ,(u'State News' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_vic_214.xml' ) + ,(u'Technology' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_tech_215.xml' ) + ,(u'World News' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_world_216.xml' ) + ,(u'Opinion', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_opinion_210.xml' ) + ,(u'Andrew Bolt' , u'http://blogs.news.com.au/heraldsun/andrewbolt/index.php/xml/rss_2.0/heraldsun/hs_andrewbolt/') + ,(u'Afl - St Kilda' , u'http://feeds.news.com.au/public/rss/2.0/heraldsun_afl_stkilda_565.xml') + ,(u'Terry McCrann' ,u'http://feeds.news.com.au/public/rss/2.0/heraldsun_tmccrann_224.xml' ) + ,(u'The Other side' ,u'http://feeds.news.com.au/public/rss/2.0/heraldsun_otherside_211.xml')] + + def get_browser(self): + br = BasicNewsRecipe.get_browser(self) + if self.username and self.password: + br.open('http://www.heraldsun.com.au') + br.select_form(nr=0) + br['username'] = self.username + br['password'] = self.password + raw = br.submit().read() + if '>log out' not in raw.lower(): + raise ValueError('Failed to log in to www.heralsun' + ' are your username and password correct?') + return br + + def get_article_url(self, article): + return article.id + + diff --git a/recipes/metro_news_nl.recipe b/recipes/metro_news_nl.recipe index ac3e23869b..7623b2cb4b 100644 --- a/recipes/metro_news_nl.recipe +++ b/recipes/metro_news_nl.recipe @@ -3,25 +3,6 @@ from calibre.web.feeds.news import BasicNewsRecipe import re from calibre.utils.magick import Image from BeautifulSoup import BeautifulSoup -try: - from calibre_plugins.drMerry.debug import debuglogger as mlog - print 'drMerry debuglogger found, debug options can be used' - from calibre_plugins.drMerry.stats import statslogger as mstat - print 'drMerry stats tracker found, stat can be tracked' - mlog.setLoglevel(1) #-1 == no log; 0 for normal output - mstat.calculateStats(False) #track stats (to track stats loglevel must be > 0 - KEEPSTATS = mstat.keepmystats() - SHOWDEBUG0 = mlog.showdebuglevel(0) - SHOWDEBUG1 = mlog.showdebuglevel(1) - SHOWDEBUG2 = mlog.showdebuglevel(2) -except: - #print 'drMerry debuglogger not found, skipping debug options' - SHOWDEBUG0 = False - SHOWDEBUG1 = False - SHOWDEBUG2 = False - KEEPSTATS = False - -#print ('level0: %s\nlevel1: %s\nlevel2: %s' % (SHOWDEBUG0,SHOWDEBUG1,SHOWDEBUG2)) ''' Version 1.2, updated cover image to match the changed website. added info date on title @@ -43,80 +24,75 @@ except: extended timeout from 2 to 10 changed oldest article from 10 to 1.2 changed max articles from 15 to 25 + Version 1.9.1 18-04-2012 + removed some debug settings + updated code to match new metro-layout + Version 1.9.2 24-04-2012 + updated code to match new metro-layout + Version 1.9.3 25-04-2012 + Changed a lot of custom code into calibre code as the default code of calibre has become much faster since the first version fo this recipe + Added new feeds + Updated css + Changed order of regex to speedup proces ''' class AdvancedUserRecipe1306097511(BasicNewsRecipe): title = u'Metro Nieuws NL' oldest_article = 1.2 max_articles_per_feed = 25 - __author__ = u'DrMerry' - description = u'Metro Nederland' - language = u'nl' - simultaneous_downloads = 3 + __author__ = u'DrMerry' + description = u'Metro Nederland' + language = u'nl' + simultaneous_downloads = 5 masthead_url = 'http://blog.metronieuws.nl/wp-content/themes/metro/images/header.gif' timeout = 10 - center_navbar = True - timefmt = ' [%A, %d %b %Y]' + center_navbar = True + timefmt = ' [%A, %d %b %Y]' no_stylesheets = True remove_javascript = True remove_empty_feeds = True - cover_url = 'http://www.oldreadmetro.com/img/en/metroholland/last/1/small.jpg' + cover_url = 'http://www.oldreadmetro.com/img/en/metroholland/last/1/small.jpg' publication_type = 'newspaper' - encoding = 'utf-8' - remove_attributes = ['style', 'font', 'width', 'height'] + encoding = 'utf-8' + remove_attributes = ['style', 'font', 'width', 'height', 'itemtype', 'itemprop', 'itemscope']#, 'href'] use_embedded_content = False - conversion_options = { - 'authors' : 'Metro Nederland & calibre & DrMerry', - 'author_sort' : 'Metro Nederland & calibre & DrMerry', - 'publisher' : 'DrMerry/Metro Nederland' - } - extra_css = 'body {padding:5px 0px; background:#fff;font-size: 13px;}\ - #date, div.share-and-byline div.byline div.text div.title, div.share-and-byline div.byline div.text div.name {clear: both;margin-bottom: 10px;font-size:0.5em; color: #616262;}\ - .article-box-fact.module-title {clear:both;padding: 8px 0;color: #24763b;font-family: arial, sans-serif;font-size: 14px;font-weight: bold;}\ - h1.title {color: #000000;font-size: 44px;padding-bottom: 10px;font-weight: 300;} h2.subtitle {font-size: 13px;font-weight: 700;padding-bottom: 10px;}\ - .article-body p{padding-bottom:10px;}div.column-1-3{margin-left: 19px;padding-right: 9px;}\ - div.column-1-2 {display: inline;padding-right: 7px;}\ - p.article-image-caption {font-size: 12px;font-weight: 300;color: #616262;margin-top: 5px;} \ - p.article-image-caption .credits {font-style: italic;font-size: 10px;}\ - div.article-image-caption {width: 246px;margin-bottom: 5px;margin-left: 10px;}\ - div.article-image-caption-2column {margin-bottom: 10px;width: 373px;} div.article-image-caption-3column {}\ - img {border:0px; padding:2px;} hr.merryhr {width:30%; border-width:0px; color:green; margin-left:5px; background-color: green} div.column-3 {background-color:#eee; width:50%; margin:2px; float:right; padding:2px;} div.column-3 module-title {border: 1px solid #aaa} div.article-box-fact div.subtitle {font-weight:bold; color:green;}' + extra_css = 'body{font-size:1em;padding:5px 0}body,a,h2{background-color:#fff;text-decoration:none;color:#000}#date,div.byline,p.article-image-caption .credits,.calibrenavbar,.calibre5{font-size:.5em}.article-box-fact.module-title,#date,div.byline{clear:both}.article-box-fact{font-size:0.7em}.article-box-fact.module-title{margin:8px 0; font-size:0.8em}h2{font-size:1em}h1.title{font-size:1.4em}h1.title,.article-body p,div.article-image-caption-2column,div.article-image-caption-3column,#date,div.byline{margin-bottom:.6em}div.article-box-fact div.subtitle,.article-box-fact.module-title,h1.title,p.article-image-caption{font-weight:700}div.column-1-3{margin-left:19px}div.column-1-2{display:inline}div.column-1-2,div.column-1-3{margin-right:7px}p.article-image-caption{font-size:.6em;margin-top:5px}p.article-image-caption,#date,div.byline{color:#616262}p.article-image-caption .credits{font-style:italic}div.article-image-caption{width:246px}div.article-image-caption-2column{width:373px}div.column-3{background-color:#eee;float:right;width:50%}div.column-3 module-title{border:1px solid #aaa}div.article-box-fact div.subtitle,.article-box-fact.module-title{color:#24763b}div.byline{border-top:2px solid #24763b}div.column-3,img,div.column-3,p.small,div.article-image-caption{margin:.5em}img,p.small,.column1,h2,.calibre5,.calibrenavbar{border:0;padding:0}.column1,h1,h2,.calibrenavbar{margin:0}' + preprocess_regexps = [ - (re.compile(r']+top-line[^>]+>', re.DOTALL|re.IGNORECASE), - lambda match: '
'), - (re.compile(r'(]+metronieuws\.nl/[^>]+/templates/[^>]+jpe?g[^>]+>|metronieuws\.nl/internal\-roxen\-unit\.gif)', re.DOTALL|re.IGNORECASE), - lambda match: ''), + (re.compile(r'( |\s|]+metronieuws\.nl/([^>]+/templates/[^>]+\.jpe?g|internal\-roxen\-unit\.gif)[^>]+>)', re.DOTALL|re.IGNORECASE),lambda match: ' '), + #(re.compile(r'( |\s)+', re.DOTALL|re.IGNORECASE),lambda match:' '), + #(re.compile(r'<(a |/a)[^>]*>', re.DOTALL|re.IGNORECASE),lambda match:'') + #(re.compile('(', re.IGNORECASE | re.DOTALL), lambda match: '

')] - preprocess_regexps = [ - (re.compile(r'tweet', re.IGNORECASE | re.DOTALL), lambda match: '')] language = 'en_GB' - - masthead_url = 'http://e-edition.metro.co.uk/images/metro_logo.gif' - - keep_only_tags = [ - dict(name='h1'),dict(name='h2', attrs={'class':'h2'}), - dict(attrs={'class':['img-cnt figure']}), - dict(attrs={'class':['art-img']}), - dict(name='div', attrs={'class':'art-lft'}), - dict(name='p') + ] remove_tags = [ - dict(name = 'div',attrs={'id' : ['comments-news','formSubmission']}), - dict(name='div', attrs={'class':[ 'news m12 clrd clr-b p5t shareBtm', 'commentForm', 'metroCommentInnerWrap', - 'art-rgt','pluck-app pluck-comm','news m12 clrd clr-l p5t', 'flt-r','username','clrd' ]}), - dict(attrs={'class':['username', 'metroCommentFormWrap','commentText','commentsNav','avatar','submDateAndTime','addYourComment','displayName']}) - ,dict(name='div', attrs={'class' : 'clrd art-fd fd-gr1-b'}) + ] + + feeds = [ (u'News', u'http://www.metro.co.uk/rss/news/'), (u'Money', u'http://www.metro.co.uk/rss/money/'), (u'Sport', u'http://www.metro.co.uk/rss/sport/'), (u'Film', u'http://www.metro.co.uk/rss/metrolife/film/'), (u'Music', u'http://www.metro.co.uk/rss/metrolife/music/'), (u'TV', u'http://www.metro.co.uk/rss/tv/'), (u'Showbiz', u'http://www.metro.co.uk/rss/showbiz/'), (u'Weird News', u'http://www.metro.co.uk/rss/weird/'), (u'Travel', u'http://www.metro.co.uk/rss/travel/'), (u'Lifestyle', u'http://www.metro.co.uk/rss/lifestyle/'), (u'Books', u'http://www.metro.co.uk/rss/lifestyle/books/'), (u'Food', u'http://www.metro.co.uk/rss/lifestyle/restaurants/')] - extra_css = ''' - body {font: sans-serif medium;}' - h1 {text-align : center; font-family:Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold;} - h2 {text-align : center;color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:15px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; } - span{ font-size:9.5px; font-weight:bold;font-style:italic} - p { text-align: justify; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:normal;} - - ''' + body{ text-align: justify; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:normal;} + ''' diff --git a/recipes/ming_pao.recipe b/recipes/ming_pao.recipe index ea1823e1cc..7866c89861 100644 --- a/recipes/ming_pao.recipe +++ b/recipes/ming_pao.recipe @@ -18,16 +18,21 @@ __IncludeThumbnails__ = True __UseLife__ = True # (HK only) It is to disable premium content (Default: False) __InclPremium__ = False -# (HK only) Turn below to True if you wish to parse articles in news.mingpao.com with their printer-friendly formats (Default: True) -__ParsePFF__ = True +# (HK only) Turn below to True if you wish to parse articles in news.mingpao.com with their printer-friendly formats (Default: False) +__ParsePF__ = False +# (HK only) Turn below to True if you wish to parse articles in news.mingpao.com with text formats (Default: True) -- override __ParsePF__ +__ParseTxt__ = True +# (HK only) Use mobile text version for some articles (Default: False) +__ParseSelectedMobile__ = False # (HK only) Turn below to True if you wish hi-res images (Default: False) __HiResImg__ = False -# Override the date returned by the program if specifying a YYYYMMDD below +# Override the date returned by the program if specifying a YYYYMMDD below (not work if __ParseSelectedMobile__ is True and __UseLife__ is False) __Date__ = '' ''' Change Log: +2012/04/24: improved parsing of news.mingpao.com content 2011/12/18: update the overridden create_odf(.) routine with the one from Calibre version 0.8.31. Move __UseChineseTitle__ usage away from create_odf(.). Optional support of text_summary and thumbnail images in Kindle's article view. Start new day download of Hong Kong Mingpao at 4.30am. Set the actual publication date shown on kindle device. @@ -81,6 +86,7 @@ class MPRecipe(BasicNewsRecipe): category = 'Chinese, News, Hong Kong' extra_css = 'img {display: block; margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px; max-height:90%;} font>b {font-size:200%; font-weight:bold;} div[class=heading] {font-size:200%; font-weight:bold;} div[class=images] {font-size:50%;}' masthead_url = 'http://news.mingpao.com/image/portals_top_logo_news.gif' + remove_tags_before = dict(name='font', attrs={'color':['navy']}) keep_only_tags = [dict(name='h1'), dict(name='font', attrs={'style':['font-size:14pt; line-height:160%;']}), # for entertainment page title dict(name='font', attrs={'color':['AA0000']}), # for column articles title @@ -91,13 +97,17 @@ class MPRecipe(BasicNewsRecipe): dict(attrs={'class':['photo']}), dict(name='table', attrs={'width':['100%'], 'border':['0'], 'cellspacing':['5'], 'cellpadding':['0']}), # content in printed version of life.mingpao.com dict(name='img', attrs={'width':['180'], 'alt':['????']}), # images for source from life.mingpao.com - dict(attrs={'class':['images']}) # for images from txt + dict(attrs={'class':['images']}), # for images from txt + dict(name='table', attrs={'width':['100%'], 'cellspacing':['0'], 'cellpadding':['0'], 'border':['0']}) # content table in pda site ] if __KeepImages__: remove_tags = [dict(name='style'), dict(attrs={'id':['newscontent135']}), # for the finance page from mpfinance.com dict(name='font', attrs={'size':['2'], 'color':['666666']}), # article date in life.mingpao.com article + dict(name='img', attrs={'alt':["明報網站", "按此列印", "關閉本視窗"]}), # non-article images in life.mingpao.com article + dict(name='img', attrs={'src':["../image/top_2.gif"]}) #dict(name='table') # for content fetched from life.mingpao.com + #dict(name='table', attrs={'width':['98%'], 'cellspacing':['0'], 'cellpadding':['0'], 'border':['0']}) ] else: remove_tags = [dict(name='style'), @@ -105,6 +115,7 @@ class MPRecipe(BasicNewsRecipe): dict(name='font', attrs={'size':['2'], 'color':['666666']}), # article date in life.mingpao.com article dict(name='img'), #dict(name='table') # for content fetched from life.mingpao.com + #dict(name='table', attrs={'width':['98%'], 'cellspacing':['0'], 'cellpadding':['0'], 'border':['0']}) ] remove_attributes = ['width'] preprocess_regexps = [ @@ -118,7 +129,15 @@ class MPRecipe(BasicNewsRecipe): (re.compile(r"

", re.DOTALL|re.IGNORECASE), lambda match: "
"), (re.compile(r"

", re.DOTALL|re.IGNORECASE), - lambda match: "") + lambda match: ""), + (re.compile(r'


', re.DOTALL|re.IGNORECASE), + lambda match: ''), + (re.compile(r'', re.DOTALL|re.IGNORECASE), + lambda match: ''), + (re.compile(r'', re.DOTALL|re.IGNORECASE), + lambda match: ''), + #(re.compile(r'[
.+?]', re.DOTALL|re.IGNORECASE), + #lambda match: '') ] elif __Region__ == 'Vancouver': if __UseChineseTitle__ == True: @@ -221,6 +240,10 @@ class MPRecipe(BasicNewsRecipe): return __Date__[6:8] else: return self.get_dtlocal().strftime("%d") + + # Note: does not work with custom date given by __Date__ + def get_weekday(self): + return self.get_dtlocal().weekday() def get_cover_url(self): if __Region__ == 'Hong Kong': @@ -260,7 +283,23 @@ class MPRecipe(BasicNewsRecipe): if articles: feeds.append((title, articles)) - if __InclPremium__ == True: +# if __InclPremium__ == True: +# # parse column section articles directly from .txt files +# for title, url, keystr in [(u'\u5c08\u6b04 Columns', 'http://life.mingpao.com/cfm/dailynews2.cfm?Issue=' + dateStr +'&Category=ncolumn', 'ncl') +# ]: +# articles = self.parse_section2_txt(url, keystr) +# if articles: +# feeds.append((title, articles)) +# +# for title, url in [(u'\u526f\u520a Supplement', 'http://news.mingpao.com/' + dateStr + '/jaindex.htm'), +# (u'\u82f1\u6587 English', 'http://news.mingpao.com/' + dateStr + '/emindex.htm')]: +# articles = self.parse_section(url) +# if articles: +# feeds.append((title, articles)) + + # new + if __InclPremium__ == True and (self.get_weekday() <> 6 or __ParseSelectedMobile__ == False): + # if both not on Sunday and not __ParseSelectedMobile__, go ahead # parse column section articles directly from .txt files for title, url, keystr in [(u'\u5c08\u6b04 Columns', 'http://life.mingpao.com/cfm/dailynews2.cfm?Issue=' + dateStr +'&Category=ncolumn', 'ncl') ]: @@ -268,17 +307,45 @@ class MPRecipe(BasicNewsRecipe): if articles: feeds.append((title, articles)) - for title, url in [(u'\u526f\u520a Supplement', 'http://news.mingpao.com/' + dateStr + '/jaindex.htm'), - (u'\u82f1\u6587 English', 'http://news.mingpao.com/' + dateStr + '/emindex.htm')]: - articles = self.parse_section(url) + if __InclPremium__ == False or self.get_weekday() <> 6: + for title, url, seckey in [(u'\u526f\u520a Supplement', 'http://news.mingpao.com/' + dateStr + '/jaindex.htm', 'ja')]: + if __ParseTxt__ == False: + articles = self.parse_section(url) + else: + articles = self.parse_section_txt(url, seckey) + if articles: + feeds.append((title, articles)) + else: + if __InclPremium__ == True and __ParseSelectedMobile__ == True: + articles = self.parse_section_mobile('http://premium.mingpao.com/pda/palm', 'HotNews1.cfm?cat=ja&token=b218bc260b89c0&online=1') + if articles: + feeds.append((u'\u526f\u520a Supplement', articles)) + else: + for title, url, seckey in [(u'\u526f\u520a Supplement', 'http://news.mingpao.com/' + dateStr + '/jaindex.htm', 'ja')]: + if __ParseTxt__ == False: + articles = self.parse_section(url) + else: + articles = self.parse_section_txt(url, seckey) + if articles: + feeds.append((title, articles)) + + for title, url, seckey in [(u'\u82f1\u6587 English', 'http://news.mingpao.com/' + dateStr + '/emindex.htm', 'em')]: + if __ParseTxt__ == False: + articles = self.parse_section(url) + else: + articles = self.parse_section_txt(url, seckey) if articles: feeds.append((title, articles)) + # end of new else: - for title, url in [(u'\u8981\u805e Headline', 'http://news.mingpao.com/' + dateStr + '/gaindex.htm'), - (u'\u6e2f\u805e Local', 'http://news.mingpao.com/' + dateStr + '/gbindex.htm'), - (u'\u6559\u80b2 Education', 'http://news.mingpao.com/' + dateStr + '/gfindex.htm'), - (u'\u793e\u8a55/\u7b46\u9663 Editorial', 'http://news.mingpao.com/' + dateStr + '/mrindex.htm')]: - articles = self.parse_section(url) + for title, url, seckey in [(u'\u8981\u805e Headline', 'http://news.mingpao.com/' + dateStr + '/gaindex.htm', 'ga'), + (u'\u6e2f\u805e Local', 'http://news.mingpao.com/' + dateStr + '/gbindex.htm', 'gb'), + (u'\u6559\u80b2 Education', 'http://news.mingpao.com/' + dateStr + '/gfindex.htm', 'gf'), + (u'\u793e\u8a55/\u7b46\u9663 Editorial', 'http://news.mingpao.com/' + dateStr + '/mrindex.htm', 'mr')]: + if __ParseTxt__ == False: + articles = self.parse_section(url) + else: + articles = self.parse_section_txt(url, seckey) if articles: feeds.append((title, articles)) @@ -287,10 +354,13 @@ class MPRecipe(BasicNewsRecipe): #if ed_articles: # feeds.append((u'\u793e\u8a55/\u7b46\u9663 Editorial', ed_articles)) - for title, url in [(u'\u8ad6\u58c7 Forum', 'http://news.mingpao.com/' + dateStr + '/faindex.htm'), - (u'\u4e2d\u570b China', 'http://news.mingpao.com/' + dateStr + '/caindex.htm'), - (u'\u570b\u969b World', 'http://news.mingpao.com/' + dateStr + '/taindex.htm')]: - articles = self.parse_section(url) + for title, url, seckey in [(u'\u8ad6\u58c7 Forum', 'http://news.mingpao.com/' + dateStr + '/faindex.htm', 'fa'), + (u'\u4e2d\u570b China', 'http://news.mingpao.com/' + dateStr + '/caindex.htm', 'ca'), + (u'\u570b\u969b World', 'http://news.mingpao.com/' + dateStr + '/taindex.htm', 'ta')]: + if __ParseTxt__ == False: + articles = self.parse_section(url) + else: + articles = self.parse_section_txt(url, seckey) if articles: feeds.append((title, articles)) @@ -322,7 +392,9 @@ class MPRecipe(BasicNewsRecipe): if articles: feeds.append((title, articles)) - if __InclPremium__ == True: + + if __InclPremium__ == True and (self.get_weekday() <> 6 or __ParseSelectedMobile__ == False): + # if both not on Sunday or not __ParseSelectedMobile__, go ahead # parse column section articles directly from .txt files for title, url, keystr in [(u'\u5c08\u6b04 Columns', 'http://life.mingpao.com/cfm/dailynews2.cfm?Issue=' + dateStr +'&Category=ncolumn', 'ncl') ]: @@ -330,12 +402,36 @@ class MPRecipe(BasicNewsRecipe): if articles: feeds.append((title, articles)) - for title, url in [(u'\u526f\u520a Supplement', 'http://news.mingpao.com/' + dateStr + '/jaindex.htm'), - (u'\u82f1\u6587 English', 'http://news.mingpao.com/' + dateStr + '/emindex.htm')]: - articles = self.parse_section(url) + if __InclPremium__ == False or self.get_weekday() <> 6: + for title, url, seckey in [(u'\u526f\u520a Supplement', 'http://news.mingpao.com/' + dateStr + '/jaindex.htm', 'ja')]: + if __ParseTxt__ == False: + articles = self.parse_section(url) + else: + articles = self.parse_section_txt(url, seckey) + if articles: + feeds.append((title, articles)) + else: + if __InclPremium__ == True and __ParseSelectedMobile__ == True: + articles = self.parse_section_mobile('http://premium.mingpao.com/pda/palm', 'HotNews1.cfm?cat=ja&token=b218bc260b89c0&online=1') + if articles: + feeds.append((u'\u526f\u520a Supplement', articles)) + else: + for title, url, seckey in [(u'\u526f\u520a Supplement', 'http://news.mingpao.com/' + dateStr + '/jaindex.htm', 'ja')]: + if __ParseTxt__ == False: + articles = self.parse_section(url) + else: + articles = self.parse_section_txt(url, seckey) + if articles: + feeds.append((title, articles)) + + for title, url, seckey in [(u'\u82f1\u6587 English', 'http://news.mingpao.com/' + dateStr + '/emindex.htm', 'em')]: + if __ParseTxt__ == False: + articles = self.parse_section(url) + else: + articles = self.parse_section_txt(url, seckey) if articles: feeds.append((title, articles)) - + elif __Region__ == 'Vancouver': for title, url in [(u'\u8981\u805e Headline', 'http://www.mingpaovan.com/htm/News/' + dateStr + '/VAindex.htm'), (u'\u52a0\u570b Canada', 'http://www.mingpaovan.com/htm/News/' + dateStr + '/VBindex.htm'), @@ -366,7 +462,7 @@ class MPRecipe(BasicNewsRecipe): feeds.append((title, articles)) return feeds - # parse from news.mingpao.com + # parse from news.mingpao.com (web html) def parse_section(self, url): dateStr = self.get_fetchdate() soup = self.index_to_soup(url) @@ -379,17 +475,57 @@ class MPRecipe(BasicNewsRecipe): title = self.tag_to_string(a) url = a.get('href', False) url = 'http://news.mingpao.com/' + dateStr + '/' +url - # replace the url to the print-friendly version - if __ParsePFF__ == True: + # replace the url to the alternative version + if __ParsePF__ == True: + # printer-friendly option if url.rfind('Redirect') <> -1 and __InclPremium__ == True: url = re.sub(dateStr + '.*' + dateStr, dateStr, url) url = re.sub('%2F.*%2F', '/', url) - title = title.replace(u'\u6536\u8cbb\u5167\u5bb9', '') + if __InclPremium__ == True: + title = title.replace(u'\u6536\u8cbb\u5167\u5bb9', '') url = url.replace('%2Etxt', '_print.htm') url = url.replace('%5F', '_') else: url = url.replace('.htm', '_print.htm') - if url not in included_urls and url.rfind('Redirect') == -1: + #if url not in included_urls and url.rfind('Redirect') == -1 and (__InclPremium__ == False or title.rfind(u'\u6536\u8cbb\u5167\u5bb9') == -1): + if url not in included_urls and (__InclPremium__ == True or title.rfind(u'\u6536\u8cbb\u5167\u5bb9') == -1): + current_articles.append({'title': title, 'url': url, 'description':'', 'date':''}) + included_urls.append(url) + current_articles.reverse() + return current_articles + + # parse from news.mingpao.com (txt) + def parse_section_txt(self, url, ch): + dateStr = self.get_fetchdate() + soup = self.index_to_soup(url) + divs = soup.findAll(attrs={'class': ['bullet','bullet_grey']}) + current_articles = [] + included_urls = [] + divs.reverse() + for i in divs: + a = i.find('a', href = True) + title = self.tag_to_string(a) + url = a.get('href', False) + #print 'Base url: ', url + # replace the url to the alternative version + # text version + if url.rfind('Redirect') <> -1: + url = 'http://news.mingpao.com/' + dateStr + '/' +url + #print 'original url: ', url + url = re.sub(dateStr + '/../cfm/Redirect.cfm.*NewsFile=', 'ftp/WebNews2/', url) + url = re.sub('%2F', '/', url) + if __InclPremium__ == True: + title = title.replace(u'\u6536\u8cbb\u5167\u5bb9', '') + url = url.replace('%2Etxt', '.txt') + url = url.replace('%5F', '_') + else: + # get the first two char in url as ch + seckey = url[0:2] + url = url.replace('.htm', '.txt') + url = 'http://news.mingpao.com/ftp/WebNews2/' + dateStr + '/' + ch + '/' + seckey + '/' + url + #print 'updated url: ', url + if url not in included_urls and (__InclPremium__ == True or title.rfind(u'\u6536\u8cbb\u5167\u5bb9') == -1): + #if url not in included_urls and (url.rfind('Redirect') == -1) and (__InclPremium__ == False or title.rfind(u'\u6536\u8cbb\u5167\u5bb9') == -1): current_articles.append({'title': title, 'url': url, 'description':'', 'date':''}) included_urls.append(url) current_articles.reverse() @@ -415,7 +551,7 @@ class MPRecipe(BasicNewsRecipe): current_articles.append({'title': title, 'url': url, 'description': ''}) included_urls.append(url) except: - print 'skipping a premium article' + print 'skipping a premium article' current_articles.reverse() return current_articles @@ -437,6 +573,20 @@ class MPRecipe(BasicNewsRecipe): current_articles.reverse() return current_articles + # parse from mobile version + def parse_section_mobile(self, base, page): + soup = self.index_to_soup(base + '/' + page) + a = soup.findAll('a', href=True) + current_articles = [] + included_urls = [] + for i in a: + title = self.tag_to_string(i) + url = i.get('href', False) + if url not in included_urls and url.rfind('HotNews2.cfm') <> -1: + current_articles.append({'title': title, 'url': base + '/' + url, 'description': ''}) + included_urls.append(url) + return current_articles + # parse from www.mingpaovan.com def parse_section3(self, url, baseUrl): self.get_fetchdate() @@ -631,15 +781,22 @@ class MPRecipe(BasicNewsRecipe): br.open_novisit(url + "/../" + gifimg[5:len(gifimg)-1]) new_html = new_html.replace(img, gifimg) except: - # find the location of the first _ - pos = img.find('_') - if pos > -1: - # if found, insert _ after the first _ - newimg = img[0:pos] + '_' + img[pos:] - new_html = new_html.replace(img, newimg) + if __ParseTxt__ == False: + # find the location of the first _ + pos = img.find('_') + if pos > -1: + # if found, insert _ after the first _ + newimg = img[0:pos] + '_' + img[pos:] + new_html = new_html.replace(img, newimg) + else: + # if not found, insert _ after " + new_html = new_html.replace(img[1:], '"_' + img[1:]) else: - # if not found, insert _ after " - new_html = new_html.replace(img[1:], '"_' + img[1:]) + # insert to front + #print 'imgstr: ', img + pos = img.find('_') + new_html = new_html.replace(img[5:], '_' + img[5:]) + elif url.rfind('life.mingpao.com') > -1: imglist = re.findall('src=\'?.*?jpg\'', new_html) br = mechanize.Browser() @@ -673,9 +830,13 @@ class MPRecipe(BasicNewsRecipe): newimg = img[0:pos+1] + '_' + img[pos+1:] #print 'Use hi-res img', newimg new_html = new_html.replace(img, newimg) + # test + #print new_html return new_html def preprocess_html(self, soup): + for mobiletitle in soup.findAll('font', attrs={'color': ['navy']}): + mobiletitle.name = 'h1' for item in soup.findAll(style=True): del item['style'] for item in soup.findAll(style=True): @@ -909,3 +1070,4 @@ class MPRecipe(BasicNewsRecipe): opf.render(opf_file, ncx_file) + diff --git a/recipes/monbiot.recipe b/recipes/monbiot.recipe new file mode 100644 index 0000000000..5cc50c24d1 --- /dev/null +++ b/recipes/monbiot.recipe @@ -0,0 +1,43 @@ +__license__ = 'GPL v3' +__copyright__ = '2012, Darko Miletic ' +''' +www.monbiot.com +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class GeorgeMonbiot(BasicNewsRecipe): + title = 'George Monbiot - blog' + __author__ = 'Darko Miletic' + description = 'Tell people something they know already and they will thank you for it. Tell people something new and they will hate you for it.' + publisher = 'George Monbiot' + category = 'news, politics, UK, World' + oldest_article = 15 + max_articles_per_feed = 200 + no_stylesheets = True + encoding = 'utf8' + use_embedded_content = False + language = 'en_GB' + remove_empty_feeds = True + publication_type = 'blog' + extra_css = """ + body{font-family: Arial,Helvetica,sans-serif } + img{margin-bottom: 0.4em; display:block} + """ + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + remove_tags = [ + dict(name=['meta','link']), + dict(attrs={'class':'shareinpost'}), + dict(attrs={'id':'paging'}) + ] + remove_attributes=['lang'] + keep_only_tags=[dict(attrs={'id':'content'})] + + feeds = [(u'Articles', u'http://www.monbiot.com/feed/atom/')] diff --git a/recipes/national_geographic_pl.recipe b/recipes/national_geographic_pl.recipe index a2f759e878..07fc0da666 100644 --- a/recipes/national_geographic_pl.recipe +++ b/recipes/national_geographic_pl.recipe @@ -9,8 +9,9 @@ from calibre.web.feeds.recipes import BasicNewsRecipe class recipeMagic(BasicNewsRecipe): title = 'National Geographic PL' __author__ = 'Marcin Urban 2011' + __modified_by__ = 'fenuks' description = 'legenda wśród magazynów z historią sięgającą 120 lat' - cover_url = 'http://www.guj.pl/var/guj/storage/images/media/nasze_magazyny/national_geographic/logo/ng_logo/2606-1-pol-PL/ng_logo.jpg' + #cover_url = 'http://www.guj.pl/var/guj/storage/images/media/nasze_magazyny/national_geographic/logo/ng_logo/2606-1-pol-PL/ng_logo.jpg' oldest_article = 7 max_articles_per_feed = 100 no_stylesheets = True @@ -42,11 +43,43 @@ class recipeMagic(BasicNewsRecipe): ] remove_attributes = ['width','height'] + feeds=[] - feeds = [ - ('National Geographic PL', 'http://www.national-geographic.pl/rss/'), - ] + def find_articles(self, url): + articles = [] + soup=self.index_to_soup(url) + tag=soup.find(attrs={'class':'arl'}) + art=tag.ul.findAll('li') + for i in art: + title=i.a['title'] + url=i.a['href'] + #date=soup.find(id='footer').ul.li.string[41:-1] + desc=i.div.p.string + articles.append({'title' : title, + 'url' : url, + 'date' : '', + 'description' : desc + }) + return articles + + def parse_index(self): + feeds = [] + feeds.append((u"Aktualności", self.find_articles('http://www.national-geographic.pl/aktualnosci/'))) + feeds.append((u"Artykuły", self.find_articles('http://www.national-geographic.pl/artykuly/'))) + + return feeds def print_version(self, url): - return url.replace('artykuly0Cpokaz', 'drukuj-artykul') + if 'artykuly' in url: + return url.replace('artykuly/pokaz', 'drukuj-artykul') + elif 'aktualnosci' in url: + return url.replace('aktualnosci/pokaz', 'drukuj-artykul') + else: + return url + + def get_cover_url(self): + soup = self.index_to_soup('http://www.national-geographic.pl/biezace-wydania/') + tag=soup.find(attrs={'class':'txt jus'}) + self.cover_url=tag.img['src'] + return getattr(self, 'cover_url', self.cover_url) diff --git a/recipes/national_post.recipe b/recipes/national_post.recipe index 00eb918d02..f7818314ee 100644 --- a/recipes/national_post.recipe +++ b/recipes/national_post.recipe @@ -1,5 +1,4 @@ from calibre.web.feeds.recipes import BasicNewsRecipe -from calibre.ebooks.BeautifulSoup import BeautifulSoup class NYTimes(BasicNewsRecipe): @@ -11,22 +10,8 @@ class NYTimes(BasicNewsRecipe): needs_subscription = False no_stylesheets = True - #remove_tags_before = dict(name='h1', attrs={'class':'heading'}) - remove_tags_after = dict(name='div', attrs={'class':'npStoryTools npWidth1-6 npRight npTxtStrong'}) - remove_tags = [ - dict(name='iframe'), - dict(name='div', attrs={'class':['story-tools', 'npStoryTools npWidth1-6 npRight npTxtStrong']}), - #dict(name='div', attrs={'id':['qrformdiv', 'inSection', 'alpha-inner']}), - #dict(name='form', attrs={'onsubmit':''}), - dict(name='ul', attrs={'class':'npTxtAlt npGroup npTxtCentre npStoryShare npTxtStrong npTxtDim'}), - ] - - # def preprocess_html(self, soup): - # table = soup.find('table') - # if table is not None: - # table.extract() - # return soup - + auto_cleanup = True + auto_cleanup_keep = '//*[@class="npStoryPhoto npTxtPlain"]' #TO GET ARTICLE TOC @@ -53,14 +38,14 @@ class NYTimes(BasicNewsRecipe): if current_section is not None and x.name == 'h5': # Article found title = self.tag_to_string(x) - a = x.find('a', href=lambda x: x and 'story' in x) + a = x.find('a', href=True) if a is None: continue url = a.get('href', False) if not url or not title: continue #if url.startswith('story'): - url = 'http://www.nationalpost.com/todays-paper/'+url + #url = 'http://www.nationalpost.com/todays-paper/'+url self.log('\t\tFound article:', title) self.log('\t\t\t', url) current_articles.append({'title': title, 'url':url, @@ -70,11 +55,4 @@ class NYTimes(BasicNewsRecipe): feeds.append((current_section, current_articles)) return feeds - def preprocess_html(self, soup): - story = soup.find(name='div', attrs={'id':'npContentMain'}) - ##td = heading.findParent(name='td') - ##td.extract() - soup = BeautifulSoup('t') - body = soup.find(name='body') - body.insert(0, story) - return soup + diff --git a/recipes/newsweek_polska.recipe b/recipes/newsweek_polska.recipe index c8c53af655..b1d6359d11 100644 --- a/recipes/newsweek_polska.recipe +++ b/recipes/newsweek_polska.recipe @@ -2,29 +2,37 @@ #!/usr/bin/env python __license__ = 'GPL v3' -__copyright__ = '2010, matek09, matek09@gmail.com' +__copyright__ = '2010, matek09, matek09@gmail.com; 2012, admroz, a.rozewicki@gmail.com' from calibre.web.feeds.news import BasicNewsRecipe from calibre.ptempfile import PersistentTemporaryFile +from string import capwords import datetime class Newsweek(BasicNewsRecipe): + + # how many issues to go back, 0 means get the most current one + BACK_ISSUES = 1 + EDITION = '0' DATE = None YEAR = datetime.datetime.now().year title = u'Newsweek Polska' - __author__ = 'matek09' + __author__ = 'matek09, admroz' description = 'Weekly magazine' encoding = 'utf-8' language = 'pl' remove_javascript = True - temp_files = [] - articles_are_obfuscated = True + temp_files = [] + articles_are_obfuscated = True + # + # Parses each article + # def get_obfuscated_article(self, url): br = self.get_browser() br.open(url) @@ -32,14 +40,35 @@ class Newsweek(BasicNewsRecipe): page = self.index_to_soup(source) main_section = page.find(id='mainSection') - + title = main_section.find('h1') info = main_section.find('ul', attrs={'class' : 'articleInfo'}) authors = info.find('li').find('h4') article = main_section.find('div', attrs={'id' : 'article'}) - html = unicode(title) + unicode(authors) + unicode(article) + + # remove related articles box + related = article.find('div', attrs={'class' : 'relatedBox'}) + if related is not None: + related.extract() + + # remove div with social networking links and links to + # other articles in web version + for div in article.findAll('div'): + if div.find('span', attrs={'class' : 'google-plus'}): + div.extract() + + for p in div.findAll('p'): + if p.find('span', attrs={'style' : 'color: rgb(255, 0, 0);'}): + p.extract() + continue + for a in p.findAll('a'): + if a.find('span', attrs={'style' : 'font-size: larger;'}): + a.extract() + + + html = unicode(title) + unicode(authors) + unicode(article) next = main_section.find('li', attrs={'class' : 'next'}) - + while next: url = next.find('a')['href'] br.open(url) @@ -52,39 +81,41 @@ class Newsweek(BasicNewsRecipe): aside.extract() html = html + unicode(article) next = main_section.find('li', attrs={'class' : 'next'}) - - - self.temp_files.append(PersistentTemporaryFile('_temparse.html')) - self.temp_files[-1].write(html) - self.temp_files[-1].close() - return self.temp_files[-1].name - - def is_full(self, issue_soup): - while True: - main_section = issue_soup.find(id='mainSection') - next = main_section.find('li', attrs={'class' : 'next'}) - if len(main_section.findAll(attrs={'class' : 'locked'})) > 1: - return False - elif next is None: - return True - else: - issue_soup = self.index_to_soup(next.find('a')['href']) - def find_last_full_issue(self, archive_url): + + self.temp_files.append(PersistentTemporaryFile('_temparse.html')) + self.temp_files[-1].write(html) + self.temp_files[-1].close() + return self.temp_files[-1].name + + + # + # Goes back given number of issues. It also knows how to go back + # to the previous year if there are not enough issues in the current one + # + def find_last_issue(self, archive_url): archive_soup = self.index_to_soup(archive_url) select = archive_soup.find('select', attrs={'id' : 'paper_issue_select'}) - for option in select.findAll(lambda tag: tag.name == 'option' and tag.has_key('value')): + options = select.findAll(lambda tag: tag.name == 'option' and tag.has_key('value')) + + # check if need to go back to previous year + if len(options) > self.BACK_ISSUES: + option = options[self.BACK_ISSUES]; self.EDITION = option['value'].replace('http://www.newsweek.pl/wydania/','') - issue_soup = self.index_to_soup('http://www.newsweek.pl/wydania/' + self.EDITION) - if self.is_full(issue_soup): - return - - self.YEAR = self.YEAR - 1 - self.find_last_full_issue(archive_url + ',' + str(self.YEAR)) - + self.index_to_soup('http://www.newsweek.pl/wydania/' + self.EDITION) + else: + self.BACK_ISSUES = self.BACK_ISSUES - len(options) + self.YEAR = self.YEAR - 1 + self.find_last_issue(archive_url + ',' + str(self.YEAR)) + + + # + # Looks for the last issue which we want to download. Then goes on each + # section and article and stores them (assigning to sections) + # def parse_index(self): archive_url = 'http://www.newsweek.pl/wydania/archiwum' - self.find_last_full_issue(archive_url) + self.find_last_issue(archive_url) soup = self.index_to_soup('http://www.newsweek.pl/wydania/' + self.EDITION) self.DATE = self.tag_to_string(soup.find('span', attrs={'class' : 'data'})) main_section = soup.find(id='mainSection') @@ -93,32 +124,44 @@ class Newsweek(BasicNewsRecipe): feeds = [] articles = {} sections = [] - while True: - news_list = main_section.find('ul', attrs={'class' : 'newsList'}) - for h2 in news_list.findAll('h2'): - - article = self.create_article(h2) - category_div = h2.findNext('div', attrs={'class' : 'kategorie'}) - section = self.tag_to_string(category_div) - if articles.has_key(section): - articles[section].append(article) - else: - articles[section] = [article] - sections.append(section) - - next = main_section.find('li', attrs={'class' : 'next'}) - if next is None: - break - soup = self.index_to_soup(next.find('a')['href']) - main_section = soup.find(id='mainSection') - + + news_list = main_section.find('ul', attrs={'class' : 'newsList'}) + section = 'Inne' + + for li in news_list.findAll('li'): + h3 = li.find('h3') + if h3 is not None: + section = capwords(self.tag_to_string(h3)) + continue + else: + h2 = li.find('h2') + if h2 is not None: + article = self.create_article(h2) + if article is None : + continue + + if articles.has_key(section): + articles[section].append(article) + else: + articles[section] = [article] + sections.append(section) + + for section in sections: feeds.append((section, articles[section])) return feeds + + # + # Creates each article metadata (skips locked ones). The content will + # be extracted later by other method (get_obfuscated_article). + # def create_article(self, h2): article = {} a = h2.find('a') + if a is None: + return None + article['title'] = self.tag_to_string(a) article['url'] = a['href'] article['date'] = self.DATE @@ -129,7 +172,3 @@ class Newsweek(BasicNewsRecipe): else: article['description'] = '' return article - - - - diff --git a/recipes/non_leggerlo.recipe b/recipes/non_leggerlo.recipe new file mode 100644 index 0000000000..90bb76c0ef --- /dev/null +++ b/recipes/non_leggerlo.recipe @@ -0,0 +1,16 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1335362999(BasicNewsRecipe): + title = u'Non leggerlo' + oldest_article = 7 + max_articles_per_feed = 100 + auto_cleanup = False + keep_only_tags = [ + dict(name='div', attrs={'class':'post hentry'}) + ] + feeds = [(u'Non leggerlo', u'http://nonleggerlo.blogspot.com/feeds/posts/default')] + description = 'An Italian satirical blog' + language = 'it' + __author__ = 'faber1971' +__version__ = 'v1.0' +__date__ = '24, April 2012' diff --git a/recipes/nowa_fantastyka.recipe b/recipes/nowa_fantastyka.recipe index ec556da5fa..0371cb1f58 100644 --- a/recipes/nowa_fantastyka.recipe +++ b/recipes/nowa_fantastyka.recipe @@ -81,5 +81,7 @@ class Nowa_Fantastyka(BasicNewsRecipe): title=soup.find(attrs={'class':'tytul'}) if title: title['style']='font-size: 20px; font-weight: bold;' - self.log.warn(soup) + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.INDEX + a['href'] return soup diff --git a/recipes/oreilly_premium.recipe b/recipes/oreilly_premium.recipe index 9dc11059c4..17b8f241ff 100644 --- a/recipes/oreilly_premium.recipe +++ b/recipes/oreilly_premium.recipe @@ -1,45 +1,69 @@ -# Talking Points is not grabbing everything. -# The look is right, but only the last one added? -import re import time +import traceback +# above for debugging via stack from calibre.web.feeds.recipes import BasicNewsRecipe # Allows the Python soup converter, which makes parsing easier. from calibre.ebooks.BeautifulSoup import BeautifulSoup -# strip ads and graphics -# Current Column lacks a title. -# Talking Points Memo - shorten title - Remove year and Bill's name + +import os + + +from calibre.web.feeds import feeds_from_index +from calibre.utils.threadpool import WorkRequest, ThreadPool, NoResultsPending + + +# To Do: strip ads and graphics, Current Column lacks a title. # The News letter archive https://www.billoreilly.com/newsletterarchive is covered by other entries. # Newsletters: Talking Points Memos covered by cat12 +# ./ebook-convert --username xxx --password xxx +# this is derived from BasicNewsRecipe, so it can only overload those. +# Soome of what we need is otherwise in article, so we have more copy to do than otherwise. class OReillyPremium(BasicNewsRecipe): title = u'OReilly Premium' __author__ = 'TMcN' - language = 'en' description = 'Retrieves Premium and News Letter content from BillOReilly.com. Requires a Bill OReilly Premium Membership.' cover_url = 'http://images.billoreilly.com/images/headers/billgray_header.png' + custom_title = 'Bill O\'Reilly Premium - '+ time.strftime('%d %b %Y') + title = 'Bill O\'Reilly Premium' auto_cleanup = True + conversion_options = {'linearize_tables': True} encoding = 'utf8' - needs_subscription = True + language = 'en' no_stylesheets = True - oldest_article = 20 + needs_subscription = True + oldest_article = 31 remove_javascript = True remove_tags = [dict(name='img', attrs={})] # Don't go down recursions = 0 - max_articles_per_feed = 2000 + max_articles_per_feed = 20 debugMessages = True # Name, URL, Soup FindAll Attr if relevant (last two are special case), articleList catList = [ ["TV Archives", 'https://www.billoreilly.com/show?action=tvShowArchive', 'a', {'class':['showLinks','homeLinks']}, []], - ["No Spin Archives", 'https://www.billoreilly.com/blog?categoryID=7', True, {'class':['blogBody'], 'style':['padding-top:10px;']}, []], - ["Daily Briefings", 'http://www.billoreilly.com/blog?categoryID=11', True, {'class':['defaultHeaderSmallLinks']}, []], - ["Stratfor", 'http://www.billoreilly.com/blog?categoryID=5', 'a', {'class':['blogLinks']}, []], - ["Talking Points Memo", 'https://www.billoreilly.com/blog?categoryID=12', 'td', {}, []], + # ["No Spin Archives", 'https://www.billoreilly.com/blog?categoryID=7', True, {'class':['blogBody'], 'style':['padding-top:10px;']}, []], + # ["Daily Briefings", 'http://www.billoreilly.com/blog?categoryID=11', True, {'class':['defaultHeaderSmallLinks']}, []], + # ["Stratfor", 'http://www.billoreilly.com/blog?categoryID=5', 'a', {'class':['blogLinks']}, []], + # ["Talking Points Memo", 'https://www.billoreilly.com/blog?categoryID=12', 'td', {}, []], ["Current Column", 'https://www.billoreilly.com/currentcolumn', 'span', {'class':['defaultHeader']}, []] ] + feeds = [ + (u'No Spin', u'http://www.billoreilly.com/blog?action=blogArchive&rss=true&categoryID=7'), + (u'Daily Briefing', u'http://www.billoreilly.com/blog?action=blogArchive&rss=true&categoryID=11'), + (u'Talking Points', u'https://www.billoreilly.com/blog?action=blogArchive&rss=true&categoryID=12'), + (u'Blog', u'http://www.billoreilly.com/blog?action=blogArchive&rss=true&categoryID=0'), + (u'StratFor', u'http://www.billoreilly.com/blog?action=blogArchive&rss=true&categoryID=5') + ] + # http://www.billoreilly.com/blog?action=blogArchive&rss=true&categoryID=8 is word for the day. + + # Note: Talking Points is broken in the above model; the site changed to more Ajax-y. + # Now using RSS + def get_browser(self): + print("In get_browser") br = BasicNewsRecipe.get_browser() if self.username is not None and self.password is not None: br.open('https://www.billoreilly.com/pg/jsp/member/membersignin.jsp') @@ -66,6 +90,7 @@ class OReillyPremium(BasicNewsRecipe): def stripBadChars(self, inString) : return inString.replace("\'", "") + def parseGeneric(self, baseURL): # Does a generic parsing of the articles. There are six categories (0-5) # Name, URL, Soup FindAll Attr if relevant (last two are special case), articleList @@ -73,6 +98,7 @@ class OReillyPremium(BasicNewsRecipe): fullReturn = [] for i in range(len(self.catList)) : articleList = [] + print("In "+self.catList[i][0]+", index: "+ str(i)) soup = self.index_to_soup(self.catList[i][1]) # Set defaults description = 'None' @@ -81,14 +107,12 @@ class OReillyPremium(BasicNewsRecipe): # 3-5 create one. # So no for-div for 3-5 - if i < 3 : + if i == 0 : + print("Starting TV Archives") for div in soup.findAll(self.catList[i][2], self.catList[i][3]): + print("Next DIV:") print(div) - if i == 1: - a = div.find('a', href=True) - else : - a = div - print(a) + a = div summary = div.find(True, attrs={'class':'summary'}) if summary: description = self.tag_to_string(summary, use_alt=False) @@ -96,82 +120,63 @@ class OReillyPremium(BasicNewsRecipe): continue # url = baseURL+re.sub(r'\?.*', '', a['href']) url = baseURL+a['href'] - if i < 2 : - url = self.extractPrintURL(baseURL, url, "Print this entry") - title = self.tag_to_string(a, use_alt=True).strip() - elif i == 2 : - # Daily Briefs - url = self.extractPrintURL(baseURL, url, "Print this entry") - title = div.contents[0] - if self.debugMessages : - print(title+" @ "+url) + url = self.extractPrintURL(baseURL, url, "Print this entry") + title = self.tag_to_string(a, use_alt=True).strip() articleList.append(dict(title=title, url=url, date=pubdate, description=description, content='')) - elif i == 3 : # Stratfor - a = soup.find('a', self.catList[i][3]) - if a is None : - continue - url = baseURL+a['href'] - title = self.tag_to_string(a, use_alt=True).strip() - # Get Stratfor contents so we can get the real title. - stratSoup = self.index_to_soup(url) - title = stratSoup.html.head.title.string - stratIndex = title.find('Stratfor.com:', 0) - if (stratIndex > -1) : - title = title[stratIndex+14:-1] - # Look for first blogBody
Komentarze 2K, it is used as the article. + + # calibre.web.feeds.news.BasicNewsRecipe.parse_index() fetches the list of articles. # returns a list of tuple ('feed title', list of articles) # { @@ -182,12 +187,19 @@ class OReillyPremium(BasicNewsRecipe): # 'content' : The full article (can be an empty string). This is used by FullContentProfile # } # this is used instead of BasicNewsRecipe.parse_feeds(). + # it is called by download def parse_index(self): # Parse the page into Python Soup + print("Entering recipe print_index from:") + traceback.print_stack() + print("web") baseURL = "https://www.billoreilly.com" - return self.parseGeneric(baseURL) + masterList = self.parseGeneric(baseURL) + #print(masterList) + return masterList def preprocess_html(self, soup): + print("In preprocess_html") refresh = soup.find('meta', {'http-equiv':'refresh'}) if refresh is None: return soup @@ -195,3 +207,128 @@ class OReillyPremium(BasicNewsRecipe): raw = self.browser.open('https://www.billoreilly.com'+content).read() return BeautifulSoup(raw.decode('cp1252', 'replace')) + def build_index(self): + print("In OReilly build_index()\n\n") + feedsRSS = [] + self.report_progress(0, ('Fetching feeds...')) + #try: + feeds = feeds_from_index(self.parse_index(), oldest_article=self.oldest_article, + max_articles_per_feed=self.max_articles_per_feed, + log=self.log) + self.report_progress(0, ('Got feeds from index page')) + #except NotImplementedError: + # feeds = self.parse_feeds() + # Now add regular feeds. + feedsRSS = self.parse_feeds() + print ("feedsRSS is type "+feedsRSS.__class__.__name__) + + for articles in feedsRSS: + print("articles is type "+articles.__class__.__name__) + print("Title:" + articles.title) + feeds.append(articles) + if not feeds: + raise ValueError('No articles found, aborting') + + #feeds = FeedCollection(feeds) + + self.report_progress(0, ('Trying to download cover...')) + self.download_cover() + self.report_progress(0, ('Generating masthead...')) + self.masthead_path = None + + try: + murl = self.get_masthead_url() + except: + self.log.exception('Failed to get masthead url') + murl = None + + if murl is not None: + # Try downloading the user-supplied masthead_url + # Failure sets self.masthead_path to None + self.download_masthead(murl) + if self.masthead_path is None: + self.log.info("Synthesizing mastheadImage") + self.masthead_path = os.path.join(self.output_dir, 'mastheadImage.jpg') + try: + self.default_masthead_image(self.masthead_path) + except: + self.log.exception('Failed to generate default masthead image') + self.masthead_path = None + + if self.test: + feeds = feeds[:2] + self.has_single_feed = len(feeds) == 1 + + index = os.path.join(self.output_dir, 'index.html') + + html = self.feeds2index(feeds) + with open(index, 'wb') as fi: + fi.write(html) + + self.jobs = [] + + if self.reverse_article_order: + for feed in feeds: + if hasattr(feed, 'reverse'): + feed.reverse() + + self.feed_objects = feeds + for f, feed in enumerate(feeds): + feed_dir = os.path.join(self.output_dir, 'feed_%d'%f) + if not os.path.isdir(feed_dir): + os.makedirs(feed_dir) + + for a, article in enumerate(feed): + if a >= self.max_articles_per_feed: + break + art_dir = os.path.join(feed_dir, 'article_%d'%a) + if not os.path.isdir(art_dir): + os.makedirs(art_dir) + try: + url = self.print_version(article.url) + except NotImplementedError: + url = article.url + except: + self.log.exception('Failed to find print version for: '+article.url) + url = None + if not url: + continue + func, arg = (self.fetch_embedded_article, article) \ + if self.use_embedded_content or (self.use_embedded_content == None and feed.has_embedded_content()) \ + else \ + ((self.fetch_obfuscated_article if self.articles_are_obfuscated \ + else self.fetch_article), url) + req = WorkRequest(func, (arg, art_dir, f, a, len(feed)), + {}, (f, a), self.article_downloaded, + self.error_in_article_download) + req.feed = feed + req.article = article + req.feed_dir = feed_dir + self.jobs.append(req) + + + self.jobs_done = 0 + tp = ThreadPool(self.simultaneous_downloads) + for req in self.jobs: + tp.putRequest(req, block=True, timeout=0) + + + self.report_progress(0, ('Starting download [%d thread(s)]...')%self.simultaneous_downloads) + while True: + try: + tp.poll() + time.sleep(0.1) + except NoResultsPending: + break + for f, feed in enumerate(feeds): + print("Writing feeds for "+feed.title) + html = self.feed2index(f,feeds) + feed_dir = os.path.join(self.output_dir, 'feed_%d'%f) + with open(os.path.join(feed_dir, 'index.html'), 'wb') as fi: + fi.write(html) + self.create_opf(feeds) + self.report_progress(1, ('Feeds downloaded to %s')%index) + + return index + + diff --git a/recipes/orlando_sentinel.recipe b/recipes/orlando_sentinel.recipe index 7a59f6f6ba..b327bc2b74 100644 --- a/recipes/orlando_sentinel.recipe +++ b/recipes/orlando_sentinel.recipe @@ -1,3 +1,4 @@ +import urllib, re from calibre.web.feeds.news import BasicNewsRecipe class AdvancedUserRecipe1279258912(BasicNewsRecipe): @@ -27,12 +28,30 @@ class AdvancedUserRecipe1279258912(BasicNewsRecipe): encoding = 'utf-8' conversion_options = {'linearize_tables':True} masthead_url = 'http://www.orlandosentinel.com/media/graphic/2009-07/46844851.gif' - keep_only_tags = [ - dict(name='div', attrs={'class':'story'}) - ] - remove_tags = [ - dict(name='div', attrs={'class':['articlerail','tools','comment-group','clearfix']}), - ] - remove_tags_after = [ - dict(name='p', attrs={'class':'copyright'}), - ] + + auto_cleanup = True + + def get_article_url(self, article): + ans = None + try: + s = article.summary + ans = urllib.unquote( + re.search(r'href=".+?bookmark.cfm.+?link=(.+?)"', s).group(1)) + except: + pass + if ans is None: + link = article.get('feedburner_origlink', None) + if link and link.split('/')[-1]=="story01.htm": + link=link.split('/')[-2] + encoding = {'0B': '.', '0C': '/', '0A': '0', '0F': '=', '0G': '&', + '0D': '?', '0E': '-', '0N': '.com', '0L': 'http:', + '0S':'//'} + for k, v in encoding.iteritems(): + link = link.replace(k, v) + ans = link + elif link: + ans = link + if ans is not None: + return ans.replace('?track=rss', '') + + diff --git a/recipes/pc_arena.recipe b/recipes/pc_arena.recipe index 952db30c3e..56bb601f70 100644 --- a/recipes/pc_arena.recipe +++ b/recipes/pc_arena.recipe @@ -7,6 +7,7 @@ class PC_Arena(BasicNewsRecipe): description = u'Najnowsze informacje z branży IT - testy, recenzje, aktualności, rankingi, wywiady. Twoje źródło informacji o sprzęcie komputerowym.' category = 'IT' language = 'pl' + index='http://pcarena.pl' masthead_url='http://pcarena.pl/pcarena/img/logo.png' cover_url= 'http://pcarena.pl/pcarena/img/logo.png' no_stylesheets = True @@ -22,4 +23,10 @@ class PC_Arena(BasicNewsRecipe): if 'http' not in url: return 'http://pcarena.pl' + url else: - return url \ No newline at end of file + return url + + def preprocess_html(self, soup): + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + a['href']=self.index + a['href'] + return soup \ No newline at end of file diff --git a/recipes/readitlater.recipe b/recipes/readitlater.recipe index 38f7ec1a9a..92c9aaf9d6 100644 --- a/recipes/readitlater.recipe +++ b/recipes/readitlater.recipe @@ -1,5 +1,5 @@ """ -readitlaterlist.com +Pocket Calibre Recipe v1.0 """ __license__ = 'GPL v3' __copyright__ = ''' @@ -12,22 +12,23 @@ from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe -class Readitlater(BasicNewsRecipe): - title = 'ReadItLater' +class Pocket(BasicNewsRecipe): + title = 'Pocket' __author__ = 'Darko Miletic, Przemyslaw Kryger, Keith Callenberg, tBunnyMan' - description = '''Personalized news feeds. Go to readitlaterlist.com to setup \ - up your news. This version displays pages of articles from \ + description = '''Personalized news feeds. Go to getpocket.com to setup up \ + your news. This version displays pages of articles from \ oldest to newest, with max & minimum counts, and marks articles \ read after downloading.''' - publisher = 'readitlaterlist.com' + publisher = 'getpocket.com' category = 'news, custom' oldest_article = 7 max_articles_per_feed = 50 - minimum_articles = 1 + minimum_articles = 10 + mark_as_read_after_dl = True no_stylesheets = True use_embedded_content = False needs_subscription = True - INDEX = u'http://readitlaterlist.com' + INDEX = u'http://getpocket.com' LOGIN = INDEX + u'/l' readList = [] @@ -100,9 +101,31 @@ class Readitlater(BasicNewsRecipe): br = self.get_browser() for link in markList: url = self.INDEX + link + print 'Marking read: ', url response = br.open(url) - response + print response.info() def cleanup(self): - self.mark_as_read(self.readList) + if self.mark_as_read_after_dl: + self.mark_as_read(self.readList) + else: + pass + def default_cover(self, cover_file): + ''' + Create a generic cover for recipes that don't have a cover + This override adds time to the cover + ''' + try: + from calibre.ebooks import calibre_cover + title = self.title if isinstance(self.title, unicode) else \ + self.title.decode('utf-8', 'replace') + date = strftime(self.timefmt) + time = strftime('[%I:%M %p]') + img_data = calibre_cover(title, date, time) + cover_file.write(img_data) + cover_file.flush() + except: + self.log.exception('Failed to generate default cover') + return False + return True diff --git a/recipes/real_clear.recipe b/recipes/real_clear.recipe index 19add74fcd..cbf5a2f8e4 100644 --- a/recipes/real_clear.recipe +++ b/recipes/real_clear.recipe @@ -1,5 +1,7 @@ # Test with "\Program Files\Calibre2\ebook-convert.exe" RealClear.recipe .epub --test -vv --debug-pipeline debug +import re import time +from urlparse import urlparse from calibre.web.feeds.recipes import BasicNewsRecipe from calibre.ebooks.BeautifulSoup import NavigableString @@ -20,12 +22,13 @@ class RealClear(BasicNewsRecipe): # Don't go down recursions = 0 max_articles_per_feed = 400 - debugMessages = False + debugMessages = True # Numeric parameter is type, controls whether we look for feedsets = [ - ["Politics", "http://www.realclearpolitics.com/index.xml", 0], - ["Science", "http://www.realclearscience.com/index.xml", 0], + ["Politics", "http://www.realclearpolitics.com/index.xml", 0], + ["Policy", "http://www.realclearpolicy.com/index.xml", 0], + ["Science", "http://www.realclearscience.com/index.xml", 0], ["Tech", "http://www.realcleartechnology.com/index.xml", 0], # The feedburner is essentially the same as the top feed, politics. # ["Politics Burner", "http://feeds.feedburner.com/realclearpolitics/qlMj", 1], @@ -37,7 +40,9 @@ class RealClear(BasicNewsRecipe): ] # Hints to extractPrintURL. # First column is the URL snippet. Then the string to search for as text, and the attributes to look for above it. Start with attributes and drill down. - printhints = [ + phUrlSnip, phLinkText, phMainSearch, phHrefSearch = range(4) + + printhints = [ ["realclear", "", '' , 'printpage'], ["billoreilly.com", "Print this entry", 'a', ''], ["billoreilly.com", "Print This Article", 'a', ''], ["politico.com", "Print", 'a', 'share-print'], @@ -48,11 +53,24 @@ class RealClear(BasicNewsRecipe): # usatoday - just prints with all current crap anyhow ] + # RCP - look for a strange compound. See http://www.realclearpolitics.com/articles/2012/01/24/in_speech_obama_to_call_for_fairness_--_and_four_more_years_112879.html + # The print link isn't obvious, and only the end is needed (the -full append.) SO maybe try that first?s + # http://www.realclearpolitics.com/printpage/?url=http://www.realclearpolitics.com/articles/2012/01/24/in_speech_obama_to_call_for_fairness_--_and_four_more_years_112879-full.html + # Single page articles don't have a _full; e.g. http://www.realclearpolitics.com/articles/2012/01/25/obamas_green_robber_barons_112897.html + # Use the FULL PRINTPAGE URL; it formats it better too! + # + # NYT - try single page... + # Need special code - is it one page or several? Which URL? + # from http://www.nytimes.com/2012/01/22/business/apple-america-and-a-squeezed-middle-class.html?_r=1 + # to http://www.nytimes.com/2012/01/22/business/apple-america-and-a-squeezed-middle-class.html?_r=1&pagewanted=all + # which is at link rel="canonical" and at 0 and len(self.printhints[x][1]) == 0: + if len(self.printhints[x][self.phHrefSearch])>0 and len(self.printhints[x][self.phLinkText]) == 0: + # e.g. RealClear if self.debugMessages == True : - print("search1") + print("Search by href: "+self.printhints[x][self.phHrefSearch]) + printFind = soup.find(href=re.compile(self.printhints[x][self.phHrefSearch])) + elif len(self.printhints[x][3])>0 and len(self.printhints[x][1]) == 0: + if self.debugMessages == True : + print("Search 1: "+self.printhints[x][2]+" Attributes: ") + print(self.printhints[x][3]) printFind = soup.find(self.printhints[x][2], attrs=self.printhints[x][3]) elif len(self.printhints[x][3])>0 : if self.debugMessages == True : print("search2") printFind = soup.find(self.printhints[x][2], attrs=self.printhints[x][3], text=self.printhints[x][1]) else : + if self.debugMessages == True: + print("Default Search: "+self.printhints[x][2]+" Text: "+self.printhints[x][1]) printFind = soup.find(self.printhints[x][2], text=self.printhints[x][1]) if printFind is None: if self.debugMessages == True : print("Not Found") + # print(soup) + print("end soup\n\n"); continue + print(printFind) if isinstance(printFind, NavigableString)==False: if printFind['href'] is not None: + print("Check "+printFind['href']+" for base of "+baseURL) + if printFind['href'].find("http")!=0 : + return baseURL+printFind['href'] return printFind['href'] tag = printFind.parent print(tag) @@ -158,6 +190,7 @@ class RealClear(BasicNewsRecipe): def parse_index(self): # Parse the page into Python Soup + #articleList = [] ans = [] feedsCount = len(self.feedsets) for x in range(0,feedsCount): # should be ,4 @@ -168,3 +201,4 @@ class RealClear(BasicNewsRecipe): print(ans) return ans + diff --git a/recipes/rebelion.recipe b/recipes/rebelion.recipe new file mode 100644 index 0000000000..a01acc6204 --- /dev/null +++ b/recipes/rebelion.recipe @@ -0,0 +1,34 @@ +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import unicode_literals + +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class RebelionRecipe (BasicNewsRecipe): + __author__ = u'Marc Busqué ' #Thanks to atlantique http://www.mobileread.com/forums/member.php?u=67876 + __url__ = 'http://www.lamarciana.com' + __version__ = '1.0' + __license__ = 'GPL v3' + __copyright__ = '2012, Marc Busqué ' + title = u'Rebelion.org' + description = u'Rebelión pretende ser un medio de información alternativa que publique las noticias que no son consideradas importantes por los medios de comunicación tradicionales. También, dar a las noticias un tratamiento diferente en la línea de mostrar los intereses que los poderes económicos y políticos del mundo capitalista ocultan para mantener sus privilegios y el status actual. Queremos servir y ayudarnos de todos los grupos, colectivos y personas que trabajan por cambiar este mundo en una perspectiva radicalmente diferente, más justa, igualitaria y equilibrada social y ecológicamente. Es nuestro objetivo contar con la participación y colaboración de todos vosotros para que Rebelión sea un espacio serio, riguroso y actualizado en la difusión de noticias.' + url = 'http://www.rebelion.org' + language = 'es' + tags = 'contrainformación, información alternativa' + oldest_article = 1 + remove_empty_feeds = True + encoding = 'latin1' # + keep_only_tags = [ + {'name': 'div', 'attrs': {'id': 'CuerpoNoticia'}} + ] + no_stylesheets = True + extra_css = '.autor {font-style: italic;} .titulo {font-size: 150%;} .titulo, .pretitulo {text-align: center;} #TextoNoticia {text-align:justify;} .autor, .fuente, .entradilla {font-size: 90%; text-align: left;}' + + feeds = [ + (u'Titulares del día', u'http://www.rebelion.org/rss_portada.php'), + ] + + #See http://www.mobileread.com/forums/showthread.php?t=174501 + def print_version(self, url): + id = re.compile('\d*$').search(url).group() + return u'http://www.rebelion.org/noticia.php?id=%s' % id diff --git a/recipes/richmond_times_dispatch.recipe b/recipes/richmond_times_dispatch.recipe new file mode 100644 index 0000000000..163a6317ff --- /dev/null +++ b/recipes/richmond_times_dispatch.recipe @@ -0,0 +1,59 @@ +from calibre.web.feeds.recipes import BasicNewsRecipe + +class AdvancedUserRecipe1335532466(BasicNewsRecipe): + title = u'Richmond Times-Dispatch' + description = 'News from Richmond, Virginia, USA' + __author__ = 'jde' + cover_url = 'http://static2.dukecms.com/va_tn/timesdispatch_com/site-media/img/icons/logo252x97.png' + language = 'en' + encoding = 'utf8' + oldest_article = 1 #days + max_articles_per_feed = 25 + needs_subscription = False + remove_javascript = True + recursions = 0 + use_embedded_content = False + no_stylesheets = True + auto_cleanup = True + + feeds = [ + +('News', +'http://www2.timesdispatch.com/list/feed/rss/news-archive'), +('Breaking News', +'http://www2.timesdispatch.com/list/feed/rss/breaking-news'), +('National News', +'http://www2.timesdispatch.com/list/feed/rss/national-news'), +('Local News', +'http://www2.timesdispatch.com/list/feed/rss/local-news'), +('Business', +'http://www2.timesdispatch.com/list/feed/rss/business'), +('Local Business', +'http://www2.timesdispatch.com/list/feed/rss/local-business'), +('Politics', +'http://www2.timesdispatch.com/list/feed/rss/politics'), +('Virginia Politics', +'http://www2.timesdispatch.com/list/feed/rss/virginia-politics'), +('Editorials', +'http://www2.timesdispatch.com/list/feed/rss/editorial-desk'), +('Columnists and Blogs', +'http://www2.timesdispatch.com/list/feed/rss/news-columnists-blogs'), +('Opinion Columnists', +'http://www2.timesdispatch.com/list/feed/rss/opinion-editorial-columnists'), +('Letters to the Editor', +'http://www2.timesdispatch.com/list/feed/rss/opinion-letters'), +('Traffic', +'http://www2.timesdispatch.com/list/feed/rss/traffic'), +('Sports', +'http://www2.timesdispatch.com/list/feed/rss/sports2'), +('Entertainment/Life', +'http://www2.timesdispatch.com/list/feed/rss/entertainment'), +('Movies', +'http://www2.timesdispatch.com/list/feed/rss/movies'), +('Music', +'http://www2.timesdispatch.com/list/feed/rss/music'), +('Dining & Food', +'http://www2.timesdispatch.com/list/feed/rss/dining'), + + ] + diff --git a/recipes/sol_haber.recipe b/recipes/sol_haber.recipe new file mode 100644 index 0000000000..29db88019c --- /dev/null +++ b/recipes/sol_haber.recipe @@ -0,0 +1,141 @@ +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import unicode_literals + +__license__ = 'GPL v3' +__copyright__ = '2012, Onur Gungor onurgu@gmail.com' +__docformat__ = 'restructuredtext en' + +''' +www.sol.org.tr +''' + +import datetime + +import re + +from calibre.web.feeds.recipes import BasicNewsRecipe + +class SolHaberRecipe(BasicNewsRecipe): + title = u'soL Haber' + oldest_article = 7 + max_articles_per_feed = 100 + + language = 'tr' + __author__ = 'Onur Güngör' + description = 'Hayata soL''dan bakın..' + publisher = 'soL Haber' + tags = 'news, haberler, siyaset, türkiye, turkey, politics' + + + conversion_options = { + 'comment' : description + , 'tags' : tags + , 'publisher' : publisher + , 'language' : language + } + + category_dict = { 'sonuncu-kavga':'Sonuncu Kavga', + 'devlet-ve-siyaset':'Devlet ve Siyaset', + 'ekonomi':'Ekonomi', + 'enternasyonal-gundem':'Enternasyonel Gündem', + 'kent-gundemleri':'Kent Gündemleri', + 'kultur-sanat':'Kültür Sanat', + 'dunyadan':'Dünyadan', + 'serbest-kursu':'Serbest Kürsü', + 'medya':'Medya', + 'liseliler':'Liseliler', + 'yazarlar':'Köşe Yazıları'} + + end_date = datetime.date.today().isoformat() + start_date = (datetime.date.today()-datetime.timedelta(days=1)).isoformat() + + + section_tuples = [['Köşe Yazıları', 'http://haber.sol.org.tr/arsiv?icerik=kose_yazisi&tarih%%5Bmin%%5D%%5Bdate%%5D=%s&tarih%%5Bmax%%5D%%5Bdate%%5D=%s' % (start_date, end_date)], + ['Haberler', 'http://haber.sol.org.tr/arsiv?icerik=haber&tarih%%5Bmin%%5D%%5Bdate%%5D=%s&tarih%%5Bmax%%5D%%5Bdate%%5D=%s' % (start_date, end_date)], + ['soL postal', 'http://haber.sol.org.tr/arsiv?icerik=postal&tarih%%5Bmin%%5D%%5Bdate%%5D=%s&tarih%%5Bmax%%5D%%5Bdate%%5D=%s' % (start_date, end_date)], + ['Bizim Amerika', 'http://haber.sol.org.tr/arsiv?icerik=bizim_amerika&tarih%%5Bmin%%5D%%5Bdate%%5D=%s&tarih%%5Bmax%%5D%%5Bdate%%5D=%s' % (start_date, end_date)]] + + + # Disable stylesheets from site. + no_stylesheets = True + + cover_margins = (20, 20, '#ffffff') + + storybody_reg_exp = '^\s*(haber|kose)\s*$' + + comments_reg_exp = '^\s*makale-elestiri\s*$' + + remove_tags = [dict(name='div', attrs={'class':re.compile(comments_reg_exp, re.IGNORECASE)})] + + keep_only_tags = [dict(name='div', attrs={'class':re.compile(storybody_reg_exp, re.IGNORECASE)})] + + def get_masthead_title(self): + return self.title + "(" + self.end_date + ")" + + def parse_index(self): + + result = [] + articles_dict = dict() + + author_regexp = re.compile('^http://.*?/yazarlar/(.*?)/.*$') + category_regexp = re.compile('^http://.*?/(.+?)/.*$') + + for section_tuple in self.section_tuples: + + section_title = section_tuple[0] + section_index_url = section_tuple[1] + + self.log('Bölüm:', section_title, 'URL:', section_index_url) + + soup = self.index_to_soup(section_index_url) + + logo = soup.find('div', id='logo').find('img', src=True) + if logo is not None: + self.cover_url = logo['src'] + if self.cover_url.startswith('/'): + self.cover_url = 'http://haber.sol.org.tr'+self.cover_url + + view_content = soup.find('div', id='ana-icerik').find('div', attrs={'class':'view-content'}) + if view_content == None: + break + rows = view_content.find('tbody').findAll('tr') + + self.log('Row sayısı', len(rows)) + for row in rows: + cells = row.findAll('td') + + a = cells[1].find('a', href=True) + + url = a['href'] + title = self.tag_to_string(a) + + if url.startswith('/'): + url = 'http://haber.sol.org.tr'+url + + category = section_title + category_match_result = category_regexp.match(url) + if category_match_result: + category = category_match_result.group(1) + + date = self.tag_to_string(cells[2]) + + author = 'soL haber' + + author_match_result = author_regexp.match(url) + if author_match_result: + author = author_match_result.group(1) + + self.log('\tFound article:', title, 'at', url, 'published at ', date, 'by', author) + article = {'title':title, 'url':url, 'description':None, 'date':date, 'author':author} + if category in articles_dict: + articles_dict[category].append(article) + else: + articles_dict[category] = [article] + + for category in articles_dict.keys(): + if category in self.category_dict: + result.append((self.category_dict[category], articles_dict[category])) + else: + result.append((category, articles_dict[category])) + + return result diff --git a/recipes/soldiers.recipe b/recipes/soldiers.recipe index fb96e5a2ed..a1e9e5ca23 100644 --- a/recipes/soldiers.recipe +++ b/recipes/soldiers.recipe @@ -15,6 +15,8 @@ class Soldiers(BasicNewsRecipe): max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False + auto_cleanup = True + auto_cleanup_keep = '//div[@id="mediaWrapper"]' simultaneous_downloads = 1 delay = 4 max_connections = 1 @@ -31,14 +33,14 @@ class Soldiers(BasicNewsRecipe): , 'language' : language } - keep_only_tags = [dict(name='div', attrs={'id':['storyHeader','textArea']})] + #keep_only_tags = [dict(name='div', attrs={'id':['storyHeader','textArea']})] - remove_tags = [ - dict(name='div', attrs={'id':['addThis','comment','articleFooter']}) - ,dict(name=['object','link']) - ] + #remove_tags = [ + #dict(name='div', attrs={'id':['addThis','comment','articleFooter']}) + #,dict(name=['object','link']) + #] - feeds = [(u'Frontpage', u'http://www.army.mil/rss/feeds/soldiersfrontpage.xml' )] + feeds = [(u'Frontpage', u'http://www.army.mil/rss/2/' )] def get_cover_url(self): diff --git a/recipes/southernstar.recipe b/recipes/southernstar.recipe new file mode 100644 index 0000000000..69a81e2fb6 --- /dev/null +++ b/recipes/southernstar.recipe @@ -0,0 +1,136 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = '2012, watou' +''' +southernstar.ie +''' +import re +import tempfile +import os +import codecs + +from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ebooks.BeautifulSoup import Tag, NavigableString + +class TheSouthernStar(BasicNewsRecipe): + + title = 'The Southern Star' + __author__ = 'watou' + description = 'West Cork\'s leading news and information provider since 1889' + NEWS_INDEX = 'http://www.southernstar.ie/news.php' + LOCAL_NOTES = 'http://www.southernstar.ie/localnotes.php' + SPORT_INDEX = 'http://www.southernstar.ie/sport.php' + CLASSIFIEDS = 'http://www.southernstar.ie/classifieds.php' + language = 'en_IE' + encoding = 'cp1252' + + publication_type = 'newspaper' + masthead_url = 'http://www.southernstar.ie/images/logo.gif' + remove_tags_before = dict(name='div', attrs={'class':'article'}) + remove_tags_after = dict(name='div', attrs={'class':'article'}) + remove_tags = [dict(name='div', attrs={'style':'width:300px; position:relative'}), + dict(name='form'), + dict(name='div', attrs={'class':'endpanel'})] + no_stylesheets = True + tempfiles = [] + pubdate = '' + + preprocess_regexps = [(re.compile(r'', re.DOTALL), lambda m: '')] + + def parse_index(self): + feeds = [] + seen_titles = set([]) + + articles = self.fetch_ss_articles(self.NEWS_INDEX, seen_titles) + if articles: + feeds.append(('News', articles)) + + articles = self.fetch_ss_notes(self.LOCAL_NOTES) + if articles: + feeds.append(('Local Notes', articles)) + + articles = self.fetch_ss_articles(self.SPORT_INDEX, seen_titles) + if articles: + feeds.append(('Sport', articles)) + + articles = self.fetch_ss_notes(self.CLASSIFIEDS) + if articles: + feeds.append(('Classifieds', articles)) + + return feeds + + def fetch_ss_articles(self, index, seen_titles): + articles = [] + soup = self.index_to_soup(index) + ts = soup.find('div', {'class':'article'}) + ds = self.tag_to_string(ts.find('strong')) + self.pubdate = ' ['+ds+']' + self.timefmt = ' [%s]'%ds + + for post in ts.findAll('h1'): + a = post.find('a', href=True) + title = self.tag_to_string(a) + if title in seen_titles: + continue + seen_titles.add(title) + url = a['href'] + if url.startswith('article'): + url = 'http://www.southernstar.ie/'+url + self.log('\tFound article:', title, 'at', url) + p = post.findNextSibling('p') + desc = None + if p is not None: + desc = str(p) + articles.append({'title':title, 'url':url, 'description':desc, + 'date':self.pubdate}) + + return articles + + def fetch_ss_notes(self, page): + articles = [] + + soup = self.index_to_soup(page) + ts = soup.find('div', {'class':'content'}) + for post in ts.findAll('h1'): + title = self.tag_to_string(post) + self.log('\tFound note:', title) + f = tempfile.NamedTemporaryFile(suffix='.html',delete=False) + f.close() + f = codecs.open(f.name, 'w+b', self.encoding, 'replace') + url = "file://" + f.name + f.write(u'

'+title+'

') + f.write(str(post.findNextSibling('p'))) + f.write(u'') + self.log('\tWrote note to', f.name) + f.close() + self.tempfiles.append(f) + articles.append({'title':title, 'url':url, 'date':self.pubdate}) + + return articles + + def postprocess_html(self, soup, first): + for table in soup.findAll('table', align='right'): + img = table.find('img') + if img is not None: + img.extract() + caption = self.tag_to_string(table).strip() + div = Tag(soup, 'div') + div['style'] = 'text-align:center' + div.insert(0, img) + div.insert(1, Tag(soup, 'br')) + if caption: + div.insert(2, NavigableString(caption)) + table.replaceWith(div) + + return soup + + def image_url_processor(self, baseurl, url): + return url.replace(' ','%20') + + def cleanup(self): + self.log('cleaning up') + for f in self.tempfiles: + os.unlink(f.name) + self.tempfiles = [] diff --git a/recipes/swiat_obrazu.recipe b/recipes/swiat_obrazu.recipe new file mode 100644 index 0000000000..68740fa4dd --- /dev/null +++ b/recipes/swiat_obrazu.recipe @@ -0,0 +1,25 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class Swiat_Obrazu(BasicNewsRecipe): + title = u'Swiat Obrazu' + __author__ = 'fenuks' + description = u'Internetowy Dziennik o Fotografii i Wideo www.SwiatObrazu.pl to źródło informacji o technice fotografii i wideo, o sprzęcie najbardziej znanych i uznanych firm: Canon, Nikon, Sony, Hasselblad i wielu innych. Znajdziecie tu programy do obróbki zdjęć, forum foto i forum wideo i galerie zdjęć. Codziennie najświeższe informacje: aktualności, testy, poradniki, wywiady, felietony. Swiatobrazu.pl stale organizuje konkursy oraz warsztaty fotograficzne i wideo.' + category = 'photography' + masthead_url = 'http://www.swiatobrazu.pl/img/logo.jpg' + cover_url = 'http://www.swiatobrazu.pl/img/logo.jpg' + language = 'pl' + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = True + remove_javascript= True + use_embedded_content = False + feeds = [(u'Wszystko', u'http://www.swiatobrazu.pl/rss')] + + def print_version(self, url): + return url + ',drukuj' + + def image_url_processor(self, baseurl, url): + if 'http://' not in url or 'https://' not in url: + return 'http://www.swiatobrazu.pl' + url[5:] + else: + return url diff --git a/recipes/tagesspiegel.recipe b/recipes/tagesspiegel.recipe index 92d88d56ae..71191065f1 100644 --- a/recipes/tagesspiegel.recipe +++ b/recipes/tagesspiegel.recipe @@ -34,7 +34,7 @@ class TagesspiegelRSS(BasicNewsRecipe): no_javascript = True remove_empty_feeds = True encoding = 'utf-8' - remove_tags = [{'class':'hcf-header'}, {'class':'hcf-atlas'}, {'class':'hcf-date hcf-separate'}] + remove_tags = [{'class':'hcf-header'}, {'class':'hcf-atlas'}, {'class':'hcf-colon'}, {'class':'hcf-date hcf-separate'}] def print_version(self, url): url = url.split('/') @@ -51,6 +51,7 @@ class TagesspiegelRSS(BasicNewsRecipe): return ''.join(div.findAll(text=True, recursive=False)).strip() if div is not None else None articles = {} + links = set() key = None ans = [] maincol = soup.find('div', attrs={'class':re.compile('hcf-main-col')}) @@ -59,7 +60,7 @@ class TagesspiegelRSS(BasicNewsRecipe): if div['class'] == 'hcf-header': try: - key = string.capwords(feed_title(div.em.a)) + key = string.capwords(feed_title(div.em)) articles[key] = [] ans.append(key) except: @@ -70,6 +71,12 @@ class TagesspiegelRSS(BasicNewsRecipe): if not a: continue url = 'http://www.tagesspiegel.de' + a['href'] + + # check for duplicates + if url in links: + continue + links.add(url) + title = self.tag_to_string(a, use_alt=True).strip() description = '' pubdate = strftime('%a, %d %b') diff --git a/recipes/tanuki.recipe b/recipes/tanuki.recipe index 666cb8aa77..a615763307 100644 --- a/recipes/tanuki.recipe +++ b/recipes/tanuki.recipe @@ -34,4 +34,12 @@ class tanuki(BasicNewsRecipe): def preprocess_html(self, soup): self.append_page(soup, soup.body) + for a in soup('a'): + if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: + if 'tanuki-anime' in soup.title.string.lower(): + a['href']='http://anime.tanuki.pl' + a['href'] + elif 'tanuki-manga' in soup.title.string.lower(): + a['href']='http://manga.tanuki.pl' + a['href'] + elif 'tanuki-czytelnia' in soup.title.string.lower(): + a['href']='http://czytelnia.tanuki.pl' + a['href'] return soup \ No newline at end of file diff --git a/recipes/telam.recipe b/recipes/telam.recipe new file mode 100644 index 0000000000..c2dbfee1d7 --- /dev/null +++ b/recipes/telam.recipe @@ -0,0 +1,62 @@ +__license__ = 'GPL v3' +__copyright__ = '2012, Darko Miletic ' +''' +www.telam.com.ar +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class Telam(BasicNewsRecipe): + title = 'Telam' + __author__ = 'Darko Miletic' + description = 'AGENCIA DE NOTICIAS DE LA REPUBLICA ARGENTINA' + publisher = 'Telam S.E.' + category = 'news, politics, Argentina' + oldest_article = 2 + max_articles_per_feed = 200 + no_stylesheets = True + encoding = 'utf8' + use_embedded_content = False + language = 'es_AR' + remove_empty_feeds = True + publication_type = 'newsportal' + masthead_url = 'http://www.telam.com.ar/front/imagenes/encabezado/logotelam.jpg' + extra_css = """ + body{font-family: Arial,Helvetica,sans-serif } + img{margin-bottom: 0.4em; display:block} + """ + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + remove_tags = [dict(name=['meta','link'])] + remove_tags_before = dict(attrs={'class':'nota_fecha'}) + remove_tags_after = dict(attrs={'class':'nota_completa'}) + remove_attributes = ['lang'] + + + feeds = [ + (u'Ultimas noticias', u'http://www.telam.com.ar/xml/rss/' ) + ,(u'Politica' , u'http://www.telam.com.ar/xml/rss/1') + ,(u'Economia' , u'http://www.telam.com.ar/xml/rss/2') + ,(u'Sociedad' , u'http://www.telam.com.ar/xml/rss/3') + ,(u'Policiales' , u'http://www.telam.com.ar/xml/rss/4') + ,(u'Internacionales' , u'http://www.telam.com.ar/xml/rss/6') + ,(u'Espectaculos' , u'http://www.telam.com.ar/xml/rss/7') + ,(u'Cultura' , u'http://www.telam.com.ar/xml/rss/8') + ,(u'Deportes' , u'http://www.telam.com.ar/xml/rss/9') + ,(u'Telam Investiga' , u'http://www.telam.com.ar/xml/rss/5') + ] + + def print_version(self, url): + artid = url.rpartition('/')[2] + return 'http://www.telam.com.ar/?codProg=imprimir-nota&id=' + artid + + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + return soup diff --git a/recipes/the_sun.recipe b/recipes/the_sun.recipe index 80b37f329a..11500430ff 100644 --- a/recipes/the_sun.recipe +++ b/recipes/the_sun.recipe @@ -1,24 +1,25 @@ -import re +import re, random + +from calibre import browser from calibre.web.feeds.recipes import BasicNewsRecipe class AdvancedUserRecipe1325006965(BasicNewsRecipe): title = u'The Sun UK' - cover_url = 'http://www.thesun.co.uk/img/global/new-masthead-logo.png' - - description = 'A Recipe for The Sun tabloid UK - uses feed43' + description = 'A Recipe for The Sun tabloid UK' __author__ = 'Dave Asbury' - # last updated 20/2/12 + # last updated 29/4/12 language = 'en_GB' oldest_article = 1 max_articles_per_feed = 15 remove_empty_feeds = True no_stylesheets = True + #auto_cleanup = True + #articles_are_obfuscated = True masthead_url = 'http://www.thesun.co.uk/sol/img/global/Sun-logo.gif' - encoding = 'cp1251' + encoding = 'UTF-8' - encoding = 'cp1252' remove_empty_feeds = True remove_javascript = True no_stylesheets = True @@ -30,13 +31,14 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe): preprocess_regexps = [ (re.compile(r'', '

', html) + html = self.detect_scene_breaks(html) html = self.detect_whitespace(html) html = self.detect_soft_breaks(html) blanks_count = len(self.any_multi_blank.findall(html)) if blanks_count >= 1: html = self.merge_blanks(html, blanks_count) - scene_break_regex = self.line_open+'(?!('+self.common_in_text_beginnings+'|.*?'+self.common_in_text_endings+'<))(?P((?P((?!\s)\W))\s*(?P=break_char)?)+)\s*'+self.line_close - scene_break = re.compile(r'%s' % scene_break_regex, re.IGNORECASE|re.UNICODE) + detected_scene_break = re.compile(r'

]*>.*?

') + scene_break_count = len(detected_scene_break.findall(html)) # If the user has enabled scene break replacement, then either softbreaks # or 'hard' scene breaks are replaced, depending on which is in use # Otherwise separator lines are centered, use a bit larger margin in this case replacement_break = getattr(self.extra_opts, 'replace_scene_breaks', None) if replacement_break: replacement_break = self.markup_user_break(replacement_break) - if len(scene_break.findall(html)) >= 1: - html = scene_break.sub(replacement_break, html) + if scene_break_count >= 1: + html = detected_scene_break.sub(replacement_break, html) + html = re.sub(']*>\s*

', replacement_break, html) else: html = re.sub(']*>\s*

', replacement_break, html) - else: - html = scene_break.sub(self.scene_break_open+'\g'+'

', html) if self.deleted_nbsps: # put back non-breaking spaces in empty paragraphs so they render correctly diff --git a/src/calibre/ebooks/fb2/__init__.py b/src/calibre/ebooks/fb2/__init__.py index e69de29bb2..944bfdd054 100644 --- a/src/calibre/ebooks/fb2/__init__.py +++ b/src/calibre/ebooks/fb2/__init__.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +def base64_decode(raw): + from io import BytesIO + from base64 import b64decode + + # First try the python implementation as it is faster + try: + return b64decode(raw) + except TypeError: + pass + + # Try a more robust version (adapted from FBReader sources) + A, Z, a, z, zero, nine, plus, slash, equal = bytearray(b'AZaz09+/=') + raw = bytearray(raw) + out = BytesIO() + pos = 0 + while pos < len(raw): + tot = 0 + i = 0 + while i < 4 and pos < len(raw): + byt = raw[pos] + pos += 1 + num = 0 + if A <= byt <= Z: + num = byt - A + elif a <= byt <= z: + num = byt - a + 26 + elif zero <= byt <= nine: + num = byt - zero + 52 + else: + num = {plus:62, slash:63, equal:64}.get(byt, None) + if num is None: + # Ignore this byte + continue + tot += num << (6 * (3 - i)) + i += 1 + triple = bytearray(3) + for j in (2, 1, 0): + triple[j] = tot & 0xff + tot >>= 8 + out.write(bytes(triple)) + return out.getvalue() + + diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index b45f8f9f9e..b846d76a95 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -18,6 +18,7 @@ from lxml import etree from calibre import prepare_string_for_xml from calibre.constants import __appname__, __version__ from calibre.utils.magick import Image +from calibre.utils.localization import lang_as_iso639_1 class FB2MLizer(object): ''' @@ -103,7 +104,10 @@ class FB2MLizer(object): metadata['version'] = __version__ metadata['date'] = '%i.%i.%i' % (datetime.now().day, datetime.now().month, datetime.now().year) if self.oeb_book.metadata.language: - metadata['lang'] = self.oeb_book.metadata.language[0].value + lc = lang_as_iso639_1(self.oeb_book.metadata.language[0].value) + if not lc: + lc = self.oeb_book.metadata.language[0].value + metadata['lang'] = lc or 'en' else: metadata['lang'] = u'en' metadata['id'] = None diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index ce80486af8..32aad28022 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -647,14 +647,10 @@ class Metadata(object): return (unicode(cmeta['name']+'_index'), '', '', cmeta) if key in self.custom_field_keys(): - res = self.get(key, None) + res = self.get(key, None) # get evaluates all necessary composites cmeta = self.get_user_metadata(key, make_copy=False) name = unicode(cmeta['name']) - if cmeta['datatype'] != 'composite' and (res is None or res == ''): - return (name, res, None, None) - orig_res = res - cmeta = self.get_user_metadata(key, make_copy=False) - if res is None or res == '': + if res is None or res == '': # can't check "not res" because of numeric fields return (name, res, None, None) orig_res = res datatype = cmeta['datatype'] diff --git a/src/calibre/ebooks/metadata/fb2.py b/src/calibre/ebooks/metadata/fb2.py index f5ba06e81f..2bcbe931b8 100644 --- a/src/calibre/ebooks/metadata/fb2.py +++ b/src/calibre/ebooks/metadata/fb2.py @@ -8,7 +8,6 @@ __copyright__ = '2011, Roman Mukhin , '\ import os import datetime from functools import partial -from base64 import b64decode from lxml import etree from calibre.utils.date import parse_date from calibre import guess_type, guess_all_extensions, prints, force_unicode @@ -143,6 +142,7 @@ def _parse_cover(root, mi): pass def _parse_cover_data(root, imgid, mi): + from calibre.ebooks.fb2 import base64_decode elm_binary = XPath('//fb2:binary[@id="%s"]'%imgid)(root) if elm_binary: mimetype = elm_binary[0].get('content-type', 'image/jpeg') @@ -156,7 +156,8 @@ def _parse_cover_data(root, imgid, mi): if mime_extensions: pic_data = elm_binary[0].text if pic_data: - mi.cover_data = (mime_extensions[0][1:], b64decode(pic_data)) + mi.cover_data = (mime_extensions[0][1:], + base64_decode(pic_data.strip())) else: prints("WARNING: Unsupported coverpage mime-type '%s' (id=#%s)" % (mimetype, imgid) ) diff --git a/src/calibre/ebooks/metadata/haodoo.py b/src/calibre/ebooks/metadata/haodoo.py new file mode 100644 index 0000000000..a32f7a2268 --- /dev/null +++ b/src/calibre/ebooks/metadata/haodoo.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +''' +Read meta information from Haodoo.net pdb files. +''' + +__license__ = 'GPL v3' +__copyright__ = '2012, Kan-Ru Chen ' +__docformat__ = 'restructuredtext en' + +from calibre.ebooks.pdb.header import PdbHeaderReader +from calibre.ebooks.pdb.haodoo.reader import Reader + +def get_metadata(stream, extract_cover=True): + ''' + Return metadata as a L{MetaInfo} object + ''' + stream.seek(0) + + pheader = PdbHeaderReader(stream) + reader = Reader(pheader, stream, None, None) + + return reader.get_metadata() diff --git a/src/calibre/ebooks/metadata/opf2.py b/src/calibre/ebooks/metadata/opf2.py index c30545e6e1..92aa960be6 100644 --- a/src/calibre/ebooks/metadata/opf2.py +++ b/src/calibre/ebooks/metadata/opf2.py @@ -535,7 +535,7 @@ class OPF(object): # {{{ series_index = MetadataField('series_index', is_dc=False, formatter=float, none_is=1) title_sort = TitleSortField('title_sort', is_dc=False) - rating = MetadataField('rating', is_dc=False, formatter=int) + rating = MetadataField('rating', is_dc=False, formatter=float) pubdate = MetadataField('date', formatter=parse_date, renderer=isoformat) publication_type = MetadataField('publication_type', is_dc=False) @@ -883,6 +883,8 @@ class OPF(object): # {{{ val = etree.tostring(x, with_tail=False, encoding=unicode, method='text').strip() if val and typ not in ('calibre', 'uuid'): + if typ == 'isbn' and val.lower().startswith('urn:isbn:'): + val = val[len('urn:isbn:'):] identifiers[typ] = val found_scheme = True break diff --git a/src/calibre/ebooks/metadata/pdb.py b/src/calibre/ebooks/metadata/pdb.py index d01bb0ecdb..70bcca132e 100644 --- a/src/calibre/ebooks/metadata/pdb.py +++ b/src/calibre/ebooks/metadata/pdb.py @@ -14,11 +14,14 @@ from calibre.ebooks.metadata import MetaInformation from calibre.ebooks.pdb.header import PdbHeaderReader from calibre.ebooks.metadata.ereader import get_metadata as get_eReader from calibre.ebooks.metadata.plucker import get_metadata as get_plucker +from calibre.ebooks.metadata.haodoo import get_metadata as get_Haodoo MREADER = { 'PNPdPPrs' : get_eReader, 'PNRdPPrs' : get_eReader, 'DataPlkr' : get_plucker, + 'BOOKMTIT' : get_Haodoo, + 'BOOKMTIU' : get_Haodoo, } from calibre.ebooks.metadata.ereader import set_metadata as set_eReader diff --git a/src/calibre/ebooks/metadata/sources/amazon.py b/src/calibre/ebooks/metadata/sources/amazon.py index fb1ee4af4e..4ff4726139 100644 --- a/src/calibre/ebooks/metadata/sources/amazon.py +++ b/src/calibre/ebooks/metadata/sources/amazon.py @@ -347,7 +347,10 @@ class Worker(Thread): # Get details {{{ method='text').strip() else: title = self.tostring(tdiv, encoding=unicode, method='text').strip() - return re.sub(r'[(\[].*[)\]]', '', title).strip() + ans = re.sub(r'[(\[].*[)\]]', '', title).strip() + if not ans: + ans = title.rpartition('[')[0].strip() + return ans def parse_authors(self, root): x = '//h1[contains(@class, "parseasinTitle")]/following-sibling::span/*[(name()="a" and @href) or (name()="span" and @class="contributorNameTrigger")]' diff --git a/src/calibre/ebooks/metadata/sources/base.py b/src/calibre/ebooks/metadata/sources/base.py index 4408bff6c6..2206a9ff04 100644 --- a/src/calibre/ebooks/metadata/sources/base.py +++ b/src/calibre/ebooks/metadata/sources/base.py @@ -112,6 +112,18 @@ def get_cached_cover_urls(mi): if url: yield (p, url) +def dump_caches(): + from calibre.customize.ui import metadata_plugins + return {p.name:p.dump_caches() for p in metadata_plugins(['identify'])} + +def load_caches(dump): + from calibre.customize.ui import metadata_plugins + plugins = list(metadata_plugins(['identify'])) + for p in plugins: + cache = dump.get(p.name, None) + if cache: + p.load_caches(cache) + def cap_author_token(token): lt = lower(token) if lt in ('von', 'de', 'el', 'van', 'le'): @@ -293,6 +305,16 @@ class Source(Plugin): with self.cache_lock: return self._identifier_to_cover_url_cache.get(id_, None) + def dump_caches(self): + with self.cache_lock: + return {'isbn_to_identifier':self._isbn_to_identifier_cache.copy(), + 'identifier_to_cover':self._identifier_to_cover_url_cache.copy()} + + def load_caches(self, dump): + with self.cache_lock: + self._isbn_to_identifier_cache.update(dump['isbn_to_identifier']) + self._identifier_to_cover_url_cache.update(dump['identifier_to_cover']) + # }}} # Utility functions {{{ diff --git a/src/calibre/ebooks/metadata/sources/overdrive.py b/src/calibre/ebooks/metadata/sources/overdrive.py index bb1bbb9d42..6d6ebd3990 100755 --- a/src/calibre/ebooks/metadata/sources/overdrive.py +++ b/src/calibre/ebooks/metadata/sources/overdrive.py @@ -197,14 +197,18 @@ class OverDrive(Source): title_tokens = list(self.get_title_tokens(title, strip_joiners=False, strip_subtitle=True)) - if len(title_tokens) >= len(author_tokens): + xref_q = '' + if len(author_tokens) <= 1: initial_q = ' '.join(title_tokens) xref_q = '+'.join(author_tokens) else: initial_q = ' '.join(author_tokens) - xref_q = '+'.join(title_tokens) - #log.error('Initial query is %s'%initial_q) - #log.error('Cross reference query is %s'%xref_q) + for token in title_tokens: + if len(xref_q) < len(token): + xref_q = token + + log.error('Initial query is %s'%initial_q) + log.error('Cross reference query is %s'%xref_q) q_xref = q+'SearchResults.svc/GetResults?iDisplayLength=50&sSearch='+xref_q query = '{"szKeyword":"'+initial_q+'"}' @@ -219,27 +223,30 @@ class OverDrive(Source): # get the search results object results = False + iterations = 0 while results == False: + iterations += 1 xreq = mechanize.Request(q_xref) xreq.add_header('X-Requested-With', 'XMLHttpRequest') xreq.add_header('Referer', q_init_search) xreq.add_header('Accept', 'application/json, text/javascript, */*') raw = br.open_novisit(xreq).read() for m in re.finditer(ur'"iTotalDisplayRecords":(?P\d+).*?"iTotalRecords":(?P\d+)', raw): - if int(m.group('displayrecords')) >= 1: - results = True - elif int(m.group('totalrecords')) >= 1: - if int(m.group('totalrecords')) >= 100: - if xref_q.find('+') != -1: - xref_tokens = xref_q.split('+') - xref_q = xref_tokens[0] - #log.error('xref_q is '+xref_q) - else: - xref_q = '' - xref_q = '' - q_xref = q+'SearchResults.svc/GetResults?iDisplayLength=50&sSearch='+xref_q - elif int(m.group('totalrecords')) == 0: + if int(m.group('totalrecords')) == 0: return '' + elif int(m.group('displayrecords')) >= 1: + results = True + elif int(m.group('totalrecords')) >= 1 and iterations < 3: + if xref_q.find('+') != -1: + xref_tokens = xref_q.split('+') + xref_q = xref_tokens[0] + for token in xref_tokens: + if len(xref_q) < len(token): + xref_q = token + #log.error('rewrote xref_q, new query is '+xref_q) + else: + xref_q = '' + q_xref = q+'SearchResults.svc/GetResults?iDisplayLength=50&sSearch='+xref_q return self.sort_ovrdrv_results(raw, log, title, title_tokens, author, author_tokens) @@ -263,6 +270,7 @@ class OverDrive(Source): else: if creators: creators = creators.split(', ') + # if an exact match in a preferred format occurs if ((author and creators and creators[0] == author[0]) or (not author and not creators)) and od_title.lower() == title.lower() and int(formatid) in [1, 50, 410, 900] and thumbimage: return self.format_results(reserveid, od_title, subtitle, series, publisher, @@ -330,9 +338,9 @@ class OverDrive(Source): def find_ovrdrv_data(self, br, log, title, author, isbn, ovrdrv_id=None): q = base_url if ovrdrv_id is None: - return self.overdrive_search(br, log, q, title, author) + return self.overdrive_search(br, log, q, title, author) else: - return self.overdrive_get_record(br, log, q, ovrdrv_id) + return self.overdrive_get_record(br, log, q, ovrdrv_id) @@ -461,10 +469,10 @@ if __name__ == '__main__': [ ( - {'title':'Foundation and Earth', - 'authors':['Asimov']}, - [title_test('Foundation and Earth', exact=True), - authors_test(['Isaac Asimov'])] + {'title':'The Sea Kings Daughter', + 'authors':['Elizabeth Peters']}, + [title_test('The Sea Kings Daughter', exact=False), + authors_test(['Elizabeth Peters'])] ), ( diff --git a/src/calibre/ebooks/metadata/sources/worker.py b/src/calibre/ebooks/metadata/sources/worker.py new file mode 100644 index 0000000000..48f0f99584 --- /dev/null +++ b/src/calibre/ebooks/metadata/sources/worker.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os +from threading import Event, Thread +from Queue import Queue, Empty +from io import BytesIO + +from calibre.utils.date import as_utc +from calibre.ebooks.metadata.sources.identify import identify, msprefs +from calibre.ebooks.metadata.book.base import Metadata +from calibre.customize.ui import metadata_plugins +from calibre.ebooks.metadata.sources.covers import (download_cover, + run_download) +from calibre.ebooks.metadata.sources.base import dump_caches, load_caches +from calibre.utils.logging import GUILog +from calibre.ebooks.metadata.opf2 import metadata_to_opf, OPF + +def merge_result(oldmi, newmi, ensure_fields=None): + dummy = Metadata(_('Unknown')) + for f in msprefs['ignore_fields']: + if ':' in f or (ensure_fields and f in ensure_fields): + continue + setattr(newmi, f, getattr(dummy, f)) + fields = set() + for plugin in metadata_plugins(['identify']): + fields |= plugin.touched_fields + + def is_equal(x, y): + if hasattr(x, 'tzinfo'): + x = as_utc(x) + if hasattr(y, 'tzinfo'): + y = as_utc(y) + return x == y + + for f in fields: + # Optimize so that set_metadata does not have to do extra work later + if not f.startswith('identifier:'): + if (not newmi.is_null(f) and is_equal(getattr(newmi, f), + getattr(oldmi, f))): + setattr(newmi, f, getattr(dummy, f)) + + return newmi + +def main(do_identify, covers, metadata, ensure_fields, tdir): + os.chdir(tdir) + failed_ids = set() + failed_covers = set() + all_failed = True + log = GUILog() + + for book_id, mi in metadata.iteritems(): + mi = OPF(BytesIO(mi), basedir=os.getcwdu(), + populate_spine=False).to_book_metadata() + title, authors, identifiers = mi.title, mi.authors, mi.identifiers + cdata = None + log.clear() + + if do_identify: + results = [] + try: + results = identify(log, Event(), title=title, authors=authors, + identifiers=identifiers) + except: + pass + if results: + all_failed = False + mi = merge_result(mi, results[0], ensure_fields=ensure_fields) + identifiers = mi.identifiers + if not mi.is_null('rating'): + # set_metadata expects a rating out of 10 + mi.rating *= 2 + with open('%d.mi'%book_id, 'wb') as f: + f.write(metadata_to_opf(mi, default_lang='und')) + else: + log.error('Failed to download metadata for', title) + failed_ids.add(book_id) + + if covers: + cdata = download_cover(log, title=title, authors=authors, + identifiers=identifiers) + if cdata is None: + failed_covers.add(book_id) + else: + with open('%d.cover'%book_id, 'wb') as f: + f.write(cdata[-1]) + all_failed = False + + with open('%d.log'%book_id, 'wb') as f: + f.write(log.plain_text.encode('utf-8')) + + return failed_ids, failed_covers, all_failed + +def single_identify(title, authors, identifiers): + log = GUILog() + results = identify(log, Event(), title=title, authors=authors, + identifiers=identifiers) + return [metadata_to_opf(r) for r in results], [r.has_cached_cover_url for + r in results], dump_caches(), log.dump() + +def single_covers(title, authors, identifiers, caches, tdir): + os.chdir(tdir) + load_caches(caches) + log = GUILog() + results = Queue() + worker = Thread(target=run_download, args=(log, results, Event()), + kwargs=dict(title=title, authors=authors, identifiers=identifiers)) + worker.daemon = True + worker.start() + while worker.is_alive(): + try: + plugin, width, height, fmt, data = results.get(True, 1) + except Empty: + continue + else: + name = '%s,,%s,,%s,,%s.cover'%(plugin.name, width, height, fmt) + with open(name, 'wb') as f: + f.write(data) + os.mkdir(name+'.done') + + return log.dump() + + diff --git a/src/calibre/ebooks/mobi/debug/headers.py b/src/calibre/ebooks/mobi/debug/headers.py index 034c714d31..34eeb78e9e 100644 --- a/src/calibre/ebooks/mobi/debug/headers.py +++ b/src/calibre/ebooks/mobi/debug/headers.py @@ -295,21 +295,21 @@ class MOBIHeader(object): # {{{ self.datp_record_count, = struct.unpack(b'>I', self.raw[124:128]) self.exth_flags, = struct.unpack(b'>I', self.raw[128:132]) self.has_exth = bool(self.exth_flags & 0x40) - self.has_drm_data = self.length >= 174 and len(self.raw) >= 180 + self.has_drm_data = self.length >= 174 and len(self.raw) >= 184 if self.has_drm_data: - self.unknown3 = self.raw[132:164] - self.drm_offset, = struct.unpack(b'>I', self.raw[164:168]) - self.drm_count, = struct.unpack(b'>I', self.raw[168:172]) - self.drm_size, = struct.unpack(b'>I', self.raw[172:176]) - self.drm_flags = bin(struct.unpack(b'>I', self.raw[176:180])[0]) + self.unknown3 = self.raw[132:168] + self.drm_offset, self.drm_count, self.drm_size, self.drm_flags = \ + struct.unpack(b'>4I', self.raw[168:184]) self.has_extra_data_flags = self.length >= 232 and len(self.raw) >= 232+16 self.has_fcis_flis = False self.has_multibytes = self.has_indexing_bytes = self.has_uncrossable_breaks = False self.extra_data_flags = 0 if self.has_extra_data_flags: - self.unknown4 = self.raw[180:192] - self.fdst_idx, self.fdst_count = struct.unpack_from(b'>II', + self.unknown4 = self.raw[184:192] + self.fdst_idx, self.fdst_count = struct.unpack_from(b'>LL', self.raw, 192) + if self.fdst_count <= 1: + self.fdst_idx = NULL_INDEX (self.fcis_number, self.fcis_count, self.flis_number, self.flis_count) = struct.unpack(b'>IIII', self.raw[200:216]) @@ -327,7 +327,7 @@ class MOBIHeader(object): # {{{ self.primary_index_record, = struct.unpack(b'>I', self.raw[244:248]) - if self.file_version >= 8: + if self.length >= 248: (self.sect_idx, self.skel_idx, self.datp_idx, self.oth_idx ) = struct.unpack_from(b'>4L', self.raw, 248) self.unknown9 = self.raw[264:self.length] @@ -337,12 +337,13 @@ class MOBIHeader(object): # {{{ # The following are all relative to the position of the header record # make them absolute for ease of debugging - for x in ('sect_idx', 'skel_idx', 'datp_idx', 'oth_idx', + self.relative_records = {'sect_idx', 'skel_idx', 'datp_idx', 'oth_idx', 'meta_orth_indx', 'huffman_record_offset', 'first_non_book_record', 'datp_record_offset', 'fcis_number', 'flis_number', 'primary_index_record', 'fdst_idx', - 'first_image_index'): - if hasattr(self, x): + 'first_image_index'} + for x in self.relative_records: + if hasattr(self, x) and getattr(self, x) != NULL_INDEX: setattr(self, x, self.header_offset+getattr(self, x)) if self.has_exth: @@ -355,70 +356,79 @@ class MOBIHeader(object): # {{{ def __str__(self): ans = ['*'*20 + ' MOBI %d Header '%self.file_version+ '*'*20] + a = ans.append - i = lambda d, x : a('%s (null value: %d): %d'%(d, NULL_INDEX, x)) - ans.append('Compression: %s'%self.compression) - ans.append('Unused: %r'%self.unused) - ans.append('Number of text records: %d'%self.number_of_text_records) - ans.append('Text record size: %d'%self.text_record_size) - ans.append('Encryption: %s'%self.encryption_type) - ans.append('Unknown: %r'%self.unknown) - ans.append('Identifier: %r'%self.identifier) - ans.append('Header length: %d'% self.length) - ans.append('Type: %s'%self.type) - ans.append('Encoding: %s'%self.encoding) - ans.append('UID: %r'%self.uid) - ans.append('File version: %d'%self.file_version) - i('Meta Orth Index (Sections index in KF8)', self.meta_orth_indx) - i('Meta Infl Index', self.meta_infl_indx) - ans.append('Secondary index record: %d (null val: %d)'%( - self.secondary_index_record, NULL_INDEX)) - ans.append('Reserved: %r'%self.reserved) - ans.append('First non-book record (null value: %d): %d'%(NULL_INDEX, - self.first_non_book_record)) - ans.append('Full name offset: %d'%self.fullname_offset) - ans.append('Full name length: %d bytes'%self.fullname_length) - ans.append('Langcode: %r'%self.locale_raw) - ans.append('Language: %s'%self.language) - ans.append('Sub language: %s'%self.sublanguage) - ans.append('Input language: %r'%self.input_language) - ans.append('Output language: %r'%self.output_langauage) - ans.append('Min version: %d'%self.min_version) - ans.append('First Image index: %d'%self.first_image_index) - ans.append('Huffman record offset: %d'%self.huffman_record_offset) - ans.append('Huffman record count: %d'%self.huffman_record_count) - ans.append('DATP record offset: %r'%self.datp_record_offset) - ans.append('DATP record count: %r'%self.datp_record_count) - ans.append('EXTH flags: %s (%s)'%(bin(self.exth_flags)[2:], self.has_exth)) + + def i(d, x): + x = 'NULL' if x == NULL_INDEX else x + a('%s: %s'%(d, x)) + + def r(d, attr): + x = getattr(self, attr) + if attr in self.relative_records and x != NULL_INDEX: + a('%s: Absolute: %d Relative: %d'%(d, x, x-self.header_offset)) + else: + i(d, x) + + a('Compression: %s'%self.compression) + a('Unused: %r'%self.unused) + a('Number of text records: %d'%self.number_of_text_records) + a('Text record size: %d'%self.text_record_size) + a('Encryption: %s'%self.encryption_type) + a('Unknown: %r'%self.unknown) + a('Identifier: %r'%self.identifier) + a('Header length: %d'% self.length) + a('Type: %s'%self.type) + a('Encoding: %s'%self.encoding) + a('UID: %r'%self.uid) + a('File version: %d'%self.file_version) + r('Meta Orth Index', 'meta_orth_indx') + r('Meta Infl Index', 'meta_infl_indx') + r('Secondary index record', 'secondary_index_record') + a('Reserved: %r'%self.reserved) + r('First non-book record', 'first_non_book_record') + a('Full name offset: %d'%self.fullname_offset) + a('Full name length: %d bytes'%self.fullname_length) + a('Langcode: %r'%self.locale_raw) + a('Language: %s'%self.language) + a('Sub language: %s'%self.sublanguage) + a('Input language: %r'%self.input_language) + a('Output language: %r'%self.output_langauage) + a('Min version: %d'%self.min_version) + r('First Image index', 'first_image_index') + r('Huffman record offset', 'huffman_record_offset') + a('Huffman record count: %d'%self.huffman_record_count) + r('DATP record offset', 'datp_record_offset') + a('DATP record count: %r'%self.datp_record_count) + a('EXTH flags: %s (%s)'%(bin(self.exth_flags)[2:], self.has_exth)) if self.has_drm_data: - ans.append('Unknown3: %r'%self.unknown3) - ans.append('DRM Offset: %s'%self.drm_offset) - ans.append('DRM Count: %s'%self.drm_count) - ans.append('DRM Size: %s'%self.drm_size) - ans.append('DRM Flags: %r'%self.drm_flags) + a('Unknown3: %r'%self.unknown3) + r('DRM Offset', 'drm_offset') + a('DRM Count: %s'%self.drm_count) + a('DRM Size: %s'%self.drm_size) + a('DRM Flags: %r'%self.drm_flags) if self.has_extra_data_flags: - ans.append('Unknown4: %r'%self.unknown4) - ans.append('FDST Index: %d'% self.fdst_idx) - ans.append('FDST Count: %d'% self.fdst_count) - ans.append('FCIS number: %d'% self.fcis_number) - ans.append('FCIS count: %d'% self.fcis_count) - ans.append('FLIS number: %d'% self.flis_number) - ans.append('FLIS count: %d'% self.flis_count) - ans.append('Unknown6: %r'% self.unknown6) - ans.append('SRCS record index: %d'%self.srcs_record_index) - ans.append('Number of SRCS records?: %d'%self.num_srcs_records) - ans.append('Unknown7: %r'%self.unknown7) - ans.append(('Extra data flags: %s (has multibyte: %s) ' + a('Unknown4: %r'%self.unknown4) + r('FDST Index', 'fdst_idx') + a('FDST Count: %d'% self.fdst_count) + r('FCIS number', 'fcis_number') + a('FCIS count: %d'% self.fcis_count) + r('FLIS number', 'flis_number') + a('FLIS count: %d'% self.flis_count) + a('Unknown6: %r'% self.unknown6) + r('SRCS record index', 'srcs_record_index') + a('Number of SRCS records?: %d'%self.num_srcs_records) + a('Unknown7: %r'%self.unknown7) + a(('Extra data flags: %s (has multibyte: %s) ' '(has indexing: %s) (has uncrossable breaks: %s)')%( bin(self.extra_data_flags), self.has_multibytes, self.has_indexing_bytes, self.has_uncrossable_breaks )) - ans.append('Primary index record (null value: %d): %d'%(NULL_INDEX, - self.primary_index_record)) - if self.file_version >= 8: - i('Sections Index', self.sect_idx) - i('SKEL Index', self.skel_idx) - i('DATP Index', self.datp_idx) - i('Other Index', self.oth_idx) + r('NCX index', 'primary_index_record') + if self.length >= 248: + r('Sections Index', 'sect_idx') + r('SKEL Index', 'skel_idx') + r('DATP Index', 'datp_idx') + r('Other Index', 'oth_idx') if self.unknown9: a('Unknown9: %r'%self.unknown9) @@ -539,6 +549,9 @@ class TextRecord(object): # {{{ raw = '%s : %r\n\n'%(k, v) f.write(raw.encode('utf-8')) + def __len__(self): + return len(self.raw) + # }}} diff --git a/src/calibre/ebooks/mobi/debug/index.py b/src/calibre/ebooks/mobi/debug/index.py new file mode 100644 index 0000000000..488adef05d --- /dev/null +++ b/src/calibre/ebooks/mobi/debug/index.py @@ -0,0 +1,198 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from collections import OrderedDict, namedtuple + +from calibre.ebooks.mobi.reader.headers import NULL_INDEX +from calibre.ebooks.mobi.reader.index import (CNCX, parse_indx_header, + parse_tagx_section, parse_index_record, INDEX_HEADER_FIELDS) +from calibre.ebooks.mobi.reader.ncx import (tag_fieldname_map, default_entry) + +File = namedtuple('File', + 'file_number name divtbl_count start_position length') + +Elem = namedtuple('Chunk', + 'insert_pos toc_text file_number sequence_number start_pos ' + 'length') + +GuideRef = namedtuple('GuideRef', 'type title pos_fid') + +def read_index(sections, idx, codec): + table, cncx = OrderedDict(), CNCX([], codec) + + data = sections[idx].raw + + indx_header = parse_indx_header(data) + indx_count = indx_header['count'] + + if indx_header['ncncx'] > 0: + off = idx + indx_count + 1 + cncx_records = [x.raw for x in sections[off:off+indx_header['ncncx']]] + cncx = CNCX(cncx_records, codec) + + tag_section_start = indx_header['tagx'] + control_byte_count, tags = parse_tagx_section(data[tag_section_start:]) + + for i in xrange(idx + 1, idx + 1 + indx_count): + # Index record + data = sections[i].raw + parse_index_record(table, data, control_byte_count, tags, codec, + indx_header['ordt_map'], strict=True) + return table, cncx, indx_header + +class Index(object): + + def __init__(self, idx, records, codec): + self.table = self.cncx = self.header = self.records = None + if idx != NULL_INDEX: + self.table, self.cncx, self.header = read_index(records, idx, codec) + + def render(self): + ans = ['*'*10 + ' Index Header ' + '*'*10] + a = ans.append + if self.header is not None: + for field in INDEX_HEADER_FIELDS: + a('%-12s: %r'%(field, self.header[field])) + ans.extend(['', '']) + + if self.cncx: + a('*'*10 + ' CNCX ' + '*'*10) + for offset, val in self.cncx.iteritems(): + a('%10s: %s'%(offset, val)) + ans.extend(['', '']) + + if self.table is not None: + a('*'*10 + ' %d Index Entries '%len(self.table) + '*'*10) + for k, v in self.table.iteritems(): + a('%s: %r'%(k, v)) + + if self.records: + ans.extend(['', '', '*'*10 + ' Parsed Entries ' + '*'*10]) + for f in self.records: + a(repr(f)) + + return ans + [''] + + def __str__(self): + return '\n'.join(self.render()) + + def __iter__(self): + return iter(self.records) + +class SKELIndex(Index): + + def __init__(self, skelidx, records, codec): + super(SKELIndex, self).__init__(skelidx, records, codec) + self.records = [] + + if self.table is not None: + for i, text in enumerate(self.table.iterkeys()): + tag_map = self.table[text] + if set(tag_map.iterkeys()) != {1, 6}: + raise ValueError('SKEL Index has unknown tags: %s'% + (set(tag_map.iterkeys())-{1,6})) + self.records.append(File( + i, # file_number + text, # name + tag_map[1][0], # divtbl_count + tag_map[6][0], # start_pos + tag_map[6][1]) # length + ) + +class SECTIndex(Index): + + def __init__(self, sectidx, records, codec): + super(SECTIndex, self).__init__(sectidx, records, codec) + self.records = [] + + if self.table is not None: + for i, text in enumerate(self.table.iterkeys()): + tag_map = self.table[text] + if set(tag_map.iterkeys()) != {2, 3, 4, 6}: + raise ValueError('Chunk Index has unknown tags: %s'% + (set(tag_map.iterkeys())-{2, 3, 4, 6})) + + toc_text = self.cncx[tag_map[2][0]] + self.records.append(Elem( + int(text), # insert_pos + toc_text, # toc_text + tag_map[3][0], # file_number + tag_map[4][0], # sequence_number + tag_map[6][0], # start_pos + tag_map[6][1] # length + ) + ) + +class GuideIndex(Index): + + def __init__(self, guideidx, records, codec): + super(GuideIndex, self).__init__(guideidx, records, codec) + self.records = [] + + if self.table is not None: + for i, text in enumerate(self.table.iterkeys()): + tag_map = self.table[text] + if set(tag_map.iterkeys()) not in ({1, 6}, {1, 2, 3}): + raise ValueError('Guide Index has unknown tags: %s'% + tag_map) + + title = self.cncx[tag_map[1][0]] + self.records.append(GuideRef( + text, + title, + tag_map[6] if 6 in tag_map else (tag_map[2], tag_map[3]) + ) + ) + + +class NCXIndex(Index): + + def __init__(self, ncxidx, records, codec): + super(NCXIndex, self).__init__(ncxidx, records, codec) + self.records = [] + + if self.table is not None: + NCXEntry = namedtuple('NCXEntry', 'index start length depth parent ' + 'first_child last_child title pos_fid') + + for num, x in enumerate(self.table.iteritems()): + text, tag_map = x + entry = e = default_entry.copy() + entry['name'] = text + entry['num'] = num + + for tag in tag_fieldname_map.iterkeys(): + fieldname, i = tag_fieldname_map[tag] + if tag in tag_map: + fieldvalue = tag_map[tag][i] + if tag == 6: + # Appears to be an idx into the KF8 elems table with an + # offset + fieldvalue = tuple(tag_map[tag]) + entry[fieldname] = fieldvalue + for which, name in {3:'text', 5:'kind', 70:'description', + 71:'author', 72:'image_caption', + 73:'image_attribution'}.iteritems(): + if tag == which: + entry[name] = self.cncx.get(fieldvalue, + default_entry[name]) + def refindx(e, name): + ans = e[name] + if ans < 0: + ans = None + return ans + + entry = NCXEntry(start=e['pos'], index=e['num'], + length=e['len'], depth=e['hlvl'], parent=refindx(e, + 'parent'), first_child=refindx(e, 'child1'), + last_child=refindx(e, 'childn'), title=e['text'], + pos_fid=e['pos_fid']) + self.records.append(entry) + + diff --git a/src/calibre/ebooks/mobi/debug/mobi6.py b/src/calibre/ebooks/mobi/debug/mobi6.py index 640f58c661..fb5674653c 100644 --- a/src/calibre/ebooks/mobi/debug/mobi6.py +++ b/src/calibre/ebooks/mobi/debug/mobi6.py @@ -393,7 +393,7 @@ class IndexRecord(object): # {{{ parse_index_record(table, record.raw, index_header.tagx_control_byte_count, tags, - index_header.index_encoding, strict=True) + index_header.index_encoding, {}, strict=True) self.indices = [] diff --git a/src/calibre/ebooks/mobi/debug/mobi8.py b/src/calibre/ebooks/mobi/debug/mobi8.py index 20fd419e29..788ca3ed0a 100644 --- a/src/calibre/ebooks/mobi/debug/mobi8.py +++ b/src/calibre/ebooks/mobi/debug/mobi8.py @@ -2,15 +2,68 @@ # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai from __future__ import (unicode_literals, division, absolute_import, print_function) +from future_builtins import map __license__ = 'GPL v3' __copyright__ = '2012, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import sys, os, imghdr +import sys, os, imghdr, struct, textwrap +from itertools import izip +from calibre import CurrentDir from calibre.ebooks.mobi.debug.headers import TextRecord -from calibre.ebooks.mobi.utils import read_font_record +from calibre.ebooks.mobi.debug.index import (SKELIndex, SECTIndex, NCXIndex, + GuideIndex) +from calibre.ebooks.mobi.utils import read_font_record, decode_tbs, RECORD_SIZE +from calibre.ebooks.mobi.debug import format_bytes +from calibre.ebooks.mobi.reader.headers import NULL_INDEX + +class FDST(object): + + def __init__(self, raw): + if raw[:4] != b'FDST': + raise ValueError('KF8 does not have a valid FDST record') + self.sec_off, self.num_sections = struct.unpack_from(b'>LL', raw, 4) + if self.sec_off != 12: + raise ValueError('FDST record has unknown extra fields') + secf = b'>%dL' % (self.num_sections*2) + secs = struct.unpack_from(secf, raw, self.sec_off) + rest = raw[self.sec_off+struct.calcsize(secf):] + if rest: + raise ValueError('FDST record has trailing data: ' + '%s'%format_bytes(rest)) + self.sections = tuple(izip(secs[::2], secs[1::2])) + + def __str__(self): + ans = ['FDST record'] + a = lambda k, v:ans.append('%s: %s'%(k, v)) + a('Offset to sections', self.sec_off) + a('Number of section records', self.num_sections) + ans.append('**** %d Sections ****'% len(self.sections)) + for sec in self.sections: + ans.append('Start: %20d End: %d'%sec) + + return '\n'.join(ans) + +class File(object): + + def __init__(self, skel, skeleton, text, first_aid, sections): + self.name = 'part%04d'%skel.file_number + self.skeleton, self.text, self.first_aid = skeleton, text, first_aid + self.sections = sections + + def dump(self, ddir): + with open(os.path.join(ddir, self.name + '.html'), 'wb') as f: + f.write(self.text) + base = os.path.join(ddir, self.name + '-parts') + os.mkdir(base) + with CurrentDir(base): + with open('skeleton.html', 'wb') as f: + f.write(self.skeleton) + for i, text in enumerate(self.sections): + with open('sect-%04d.html'%i, 'wb') as f: + f.write(text) class MOBIFile(object): @@ -31,7 +84,12 @@ class MOBIFile(object): first_text_record+offset+h8.number_of_text_records])] self.raw_text = b''.join(r.raw for r in self.text_records) + self.header = self.mf.mobi8_header self.extract_resources() + self.read_fdst() + self.read_indices() + self.build_files() + self.read_tbs() def print_header(self, f=sys.stdout): print (str(self.mf.palmdb).encode('utf-8'), file=f) @@ -43,6 +101,55 @@ class MOBIFile(object): print (file=f) print (str(self.mf.mobi8_header).encode('utf-8'), file=f) + def read_fdst(self): + self.fdst = None + + if self.header.fdst_idx != NULL_INDEX: + idx = self.header.fdst_idx + self.fdst = FDST(self.mf.records[idx].raw) + if self.fdst.num_sections != self.header.fdst_count: + raise ValueError('KF8 Header contains invalid FDST count') + + def read_indices(self): + self.skel_index = SKELIndex(self.header.skel_idx, self.mf.records, + self.header.encoding) + self.sect_index = SECTIndex(self.header.sect_idx, self.mf.records, + self.header.encoding) + self.ncx_index = NCXIndex(self.header.primary_index_record, + self.mf.records, self.header.encoding) + self.guide_index = GuideIndex(self.header.oth_idx, self.mf.records, + self.header.encoding) + + def build_files(self): + text = self.raw_text + self.files = [] + for skel in self.skel_index.records: + sects = [x for x in self.sect_index.records if x.file_number + == skel.file_number] + skeleton = text[skel.start_position:skel.start_position+skel.length] + ftext = skeleton + first_aid = sects[0].toc_text + sections = [] + + for sect in sects: + start_pos = skel.start_position + skel.length + sect.start_pos + sect_text = text[start_pos:start_pos+sect.length] + insert_pos = sect.insert_pos - skel.start_position + ftext = ftext[:insert_pos] + sect_text + ftext[insert_pos:] + sections.append(sect_text) + + self.files.append(File(skel, skeleton, ftext, first_aid, sections)) + + def dump_flows(self, ddir): + boundaries = [(0, len(self.raw_text))] + if self.fdst is not None: + boundaries = self.fdst.sections + for i, x in enumerate(boundaries): + start, end = x + raw = self.raw_text[start:end] + with open(os.path.join(ddir, 'flow%04d.txt'%i), 'wb') as f: + f.write(raw) + def extract_resources(self): self.resource_map = [] known_types = {b'FLIS', b'FCIS', b'SRCS', @@ -79,6 +186,64 @@ class MOBIFile(object): self.resource_map.append(('%s/%06d%s.%s'%(prefix, i, suffix, ext), payload)) + def read_tbs(self): + from calibre.ebooks.mobi.writer8.tbs import (Entry, DOC, + collect_indexing_data, encode_strands_as_sequences, + sequences_to_bytes) + entry_map = [] + for index in self.ncx_index: + vals = list(index)[:-1] + [None, None, None, None] + entry_map.append(Entry(*vals)) + + + indexing_data = collect_indexing_data(entry_map, list(map(len, + self.text_records))) + self.indexing_data = [DOC + '\n' +textwrap.dedent('''\ + Index Entry lines are of the form: + depth:index_number [action] parent (index_num-parent) Geometry + + Where Geometry is the start and end of the index entry w.r.t + the start of the text record. + + ''')] + for i, strands in enumerate(indexing_data): + rec = self.text_records[i] + tbs_bytes = rec.trailing_data.get('indexing', b'') + desc = ['Record #%d'%i] + for s, strand in enumerate(strands): + desc.append('Strand %d'%s) + for entries in strand.itervalues(): + for e in entries: + desc.append( + ' %s%d [%-9s] parent: %s (%d) Geometry: (%d, %d)'%( + e.depth * (' ') + '- ', e.index, e.action, e.parent, + e.index-(e.parent or 0), e.start-i*RECORD_SIZE, + e.start+e.length-i*RECORD_SIZE)) + desc.append('TBS Bytes: ' + format_bytes(tbs_bytes)) + flag_sz = 3 + sequences = [] + otbs = tbs_bytes + while tbs_bytes: + try: + val, extra, consumed = decode_tbs(tbs_bytes, flag_size=flag_sz) + except: + break + flag_sz = 4 + tbs_bytes = tbs_bytes[consumed:] + extra = {bin(k):v for k, v in extra.iteritems()} + sequences.append((val, extra)) + for j, seq in enumerate(sequences): + desc.append('Sequence #%d: %r %r'%(j, seq[0], seq[1])) + if tbs_bytes: + desc.append('Remaining bytes: %s'%format_bytes(tbs_bytes)) + calculated_sequences = encode_strands_as_sequences(strands) + calculated_bytes = sequences_to_bytes(calculated_sequences) + if calculated_bytes != otbs: + print ('WARNING: TBS mismatch for record %d'%i) + desc.append('WARNING: TBS mismatch!') + desc.append('Calculated sequences: %r'%calculated_sequences) + desc.append('') + self.indexing_data.append('\n'.join(desc)) def inspect_mobi(mobi_file, ddir): f = MOBIFile(mobi_file) @@ -89,14 +254,38 @@ def inspect_mobi(mobi_file, ddir): with open(alltext, 'wb') as of: of.write(f.raw_text) - for x in ('text_records', 'images', 'fonts', 'binary'): + for x in ('text_records', 'images', 'fonts', 'binary', 'files', 'flows'): os.mkdir(os.path.join(ddir, x)) for rec in f.text_records: rec.dump(os.path.join(ddir, 'text_records')) for href, payload in f.resource_map: - with open(os.path.join(ddir, href), 'wb') as f: - f.write(payload) + with open(os.path.join(ddir, href), 'wb') as fo: + fo.write(payload) + + if f.fdst: + with open(os.path.join(ddir, 'fdst.record'), 'wb') as fo: + fo.write(str(f.fdst).encode('utf-8')) + + with open(os.path.join(ddir, 'skel.record'), 'wb') as fo: + fo.write(str(f.skel_index).encode('utf-8')) + + with open(os.path.join(ddir, 'chunks.record'), 'wb') as fo: + fo.write(str(f.sect_index).encode('utf-8')) + + with open(os.path.join(ddir, 'ncx.record'), 'wb') as fo: + fo.write(str(f.ncx_index).encode('utf-8')) + + with open(os.path.join(ddir, 'guide.record'), 'wb') as fo: + fo.write(str(f.guide_index).encode('utf-8')) + + with open(os.path.join(ddir, 'tbs.txt'), 'wb') as fo: + fo.write(('\n'.join(f.indexing_data)).encode('utf-8')) + + for part in f.files: + part.dump(os.path.join(ddir, 'files')) + + f.dump_flows(os.path.join(ddir, 'flows')) diff --git a/src/calibre/ebooks/mobi/mobiml.py b/src/calibre/ebooks/mobi/mobiml.py index 7cda4b0a57..d276689224 100644 --- a/src/calibre/ebooks/mobi/mobiml.py +++ b/src/calibre/ebooks/mobi/mobiml.py @@ -10,7 +10,7 @@ import copy import re from lxml import etree from calibre.ebooks.oeb.base import namespace, barename -from calibre.ebooks.oeb.base import XHTML, XHTML_NS, OEB_DOCS, urlnormalize +from calibre.ebooks.oeb.base import XHTML, XHTML_NS, urlnormalize from calibre.ebooks.oeb.stylizer import Stylizer from calibre.ebooks.oeb.transforms.flatcss import KeyMapper from calibre.utils.magick.draw import identify_data @@ -109,26 +109,8 @@ class MobiMLizer(object): self.profile = profile = context.dest self.fnums = fnums = dict((v, k) for k, v in profile.fnums.items()) self.fmap = KeyMapper(profile.fbase, profile.fbase, fnums.keys()) - self.remove_html_cover() self.mobimlize_spine() - def remove_html_cover(self): - oeb = self.oeb - if not oeb.metadata.cover \ - or 'cover' not in oeb.guide: - return - href = oeb.guide['cover'].href - del oeb.guide['cover'] - item = oeb.manifest.hrefs[href] - if item.spine_position is not None: - self.log.warn('Found an HTML cover,', item.href, 'removing it.', - 'If you find some content missing from the output MOBI, it ' - 'is because you misidentified the HTML cover in the input ' - 'document') - oeb.spine.remove(item) - if item.media_type in OEB_DOCS: - self.oeb.manifest.remove(item) - def mobimlize_spine(self): 'Iterate over the spine and convert it to MOBIML' for item in self.oeb.spine: @@ -473,7 +455,7 @@ class MobiMLizer(object): if tag in TABLE_TAGS and self.ignore_tables: tag = 'span' if tag == 'td' else 'div' - if tag == 'table': + if tag in ('table', 'td', 'tr'): col = style.backgroundColor if col: elem.set('bgcolor', col) diff --git a/src/calibre/ebooks/mobi/reader/headers.py b/src/calibre/ebooks/mobi/reader/headers.py index 3ff5d19be7..a5ca4a7132 100644 --- a/src/calibre/ebooks/mobi/reader/headers.py +++ b/src/calibre/ebooks/mobi/reader/headers.py @@ -46,7 +46,10 @@ class EXTHHeader(object): # {{{ self.thumbnail_offset, = struct.unpack('>L', content) elif idx == 501: # cdetype - pass + if content == b'EBSP': + if not self.mi.tags: + self.mi.tags = [] + self.mi.tags.append(_('Sample Book')) elif idx == 502: # last update time pass @@ -231,6 +234,22 @@ class MetadataHeader(BookHeader): else: self.exth = None + @property + def kf8_type(self): + if (self.mobi_version == 8 and getattr(self, 'skelidx', NULL_INDEX) != + NULL_INDEX): + return u'standalone' + + kf8_header_index = getattr(self.exth, 'kf8_header', None) + if kf8_header_index is None: + return None + try: + if self.section_data(kf8_header_index-1) == b'BOUNDARY': + return u'joint' + except: + pass + return None + def identity(self): self.stream.seek(60) ident = self.stream.read(8).upper() diff --git a/src/calibre/ebooks/mobi/reader/index.py b/src/calibre/ebooks/mobi/reader/index.py index d8a88227c8..c732d8862e 100644 --- a/src/calibre/ebooks/mobi/reader/index.py +++ b/src/calibre/ebooks/mobi/reader/index.py @@ -15,6 +15,12 @@ from calibre.ebooks.mobi.utils import (decint, count_set_bits, TagX = namedtuple('TagX', 'tag num_of_values bitmask eof') PTagX = namedtuple('PTagX', 'tag value_count value_bytes num_of_values') +INDEX_HEADER_FIELDS = ( + 'len', 'nul1', 'type', 'gen', 'start', 'count', 'code', + 'lng', 'total', 'ordt', 'ligt', 'nligt', 'ncncx' + ) + tuple('unknown%d'%i for i in xrange(27)) + ('ocnt', 'oentries', + 'ordt1', 'ordt2', 'tagx') + class InvalidFile(ValueError): pass @@ -36,11 +42,7 @@ def format_bytes(byts): def parse_indx_header(data): check_signature(data, b'INDX') - words = ( - 'len', 'nul1', 'type', 'gen', 'start', 'count', 'code', - 'lng', 'total', 'ordt', 'ligt', 'nligt', 'ncncx' - ) + tuple('unknown%d'%i for i in xrange(27)) + ('ocnt', 'oentries', - 'ordt1', 'ordt2', 'tagx') + words = INDEX_HEADER_FIELDS num = len(words) values = struct.unpack(bytes('>%dL' % num), data[4:4*(num+1)]) ans = dict(zip(words, values)) @@ -109,6 +111,13 @@ class CNCX(object): # {{{ def get(self, offset, default=None): return self.records.get(offset, default) + + def __bool__(self): + return bool(self.records) + __nonzero__ = __bool__ + + def iteritems(self): + return self.records.iteritems() # }}} def parse_tagx_section(data): diff --git a/src/calibre/ebooks/mobi/reader/markup.py b/src/calibre/ebooks/mobi/reader/markup.py index 8bb7f211f3..8a06bc346a 100644 --- a/src/calibre/ebooks/mobi/reader/markup.py +++ b/src/calibre/ebooks/mobi/reader/markup.py @@ -223,15 +223,15 @@ def insert_images_into_markup(parts, resource_map, log): # Handle any embedded raster images links in the xhtml text # kindle:embed:XXXX?mime=image/gif (png, jpeg, etc) (used for images) img_pattern = re.compile(r'''(<[img\s|image\s][^>]*>)''', re.IGNORECASE) - img_index_pattern = re.compile(r'''['"]kindle:embed:([0-9|A-V]+)[^'"]*['"]''') + img_index_pattern = re.compile(r'''[('"]kindle:embed:([0-9|A-V]+)[^')"]*[)'"]''') + + style_pattern = re.compile(r'''(<[a-zA-Z0-9]+\s[^>]*style\s*=\s*[^>]*>)''', + re.IGNORECASE) + for i in xrange(len(parts)): part = parts[i] - #[partnum, dir, filename, beg, end, aidtext] = self.k8proc.partinfo[i] - - # links to raster image files - # image_pattern srcpieces = img_pattern.split(part) - for j in range(1, len(srcpieces), 2): + for j in xrange(1, len(srcpieces), 2): tag = srcpieces[j] if tag.startswith(']*>)''', re.IGNORECASE) diff --git a/src/calibre/ebooks/mobi/reader/mobi8.py b/src/calibre/ebooks/mobi/reader/mobi8.py index 9d4acb6818..dcf2f998b2 100644 --- a/src/calibre/ebooks/mobi/reader/mobi8.py +++ b/src/calibre/ebooks/mobi/reader/mobi8.py @@ -9,7 +9,7 @@ __docformat__ = 'restructuredtext en' import struct, re, os, imghdr from collections import namedtuple -from itertools import repeat +from itertools import repeat, izip from urlparse import urldefrag from lxml import etree @@ -71,16 +71,16 @@ class Mobi8Reader(object): return self.write_opf(guide, ncx, spine, resource_map) def read_indices(self): - self.flow_table = (0, NULL_INDEX) + self.flow_table = () if self.header.fdstidx != NULL_INDEX: header = self.kf8_sections[self.header.fdstidx][0] if header[:4] != b'FDST': raise ValueError('KF8 does not have a valid FDST record') - num_sections, = struct.unpack_from(b'>L', header, 0x08) - sections = header[0x0c:] - self.flow_table = struct.unpack_from(b'>%dL' % (num_sections*2), - sections, 0)[::2] + (NULL_INDEX,) + sec_start, num_sections = struct.unpack_from(b'>LL', header, 4) + secs = struct.unpack_from(b'>%dL' % (num_sections*2), + header, sec_start) + self.flow_table = tuple(izip(secs[::2], secs[1::2])) self.files = [] if self.header.skelidx != NULL_INDEX: @@ -109,7 +109,7 @@ class Mobi8Reader(object): table, cncx = read_index(self.kf8_sections, self.header.othidx, self.header.codec) Item = namedtuple('Item', - 'type title div_frag_num') + 'type title pos_fid') for i, ref_type in enumerate(table.iterkeys()): tag_map = table[ref_type] @@ -119,7 +119,7 @@ class Mobi8Reader(object): if 3 in tag_map.keys(): fileno = tag_map[3][0] if 6 in tag_map.keys(): - fileno = tag_map[6][0] + fileno = tag_map[6] self.guide.append(Item(ref_type.decode(self.header.codec), title, fileno)) @@ -127,13 +127,10 @@ class Mobi8Reader(object): raw_ml = self.mobi6_reader.mobi_html self.flows = [] self.flowinfo = [] + ft = self.flow_table if self.flow_table else [(0, len(raw_ml))] # now split the raw_ml into its flow pieces - for j in xrange(0, len(self.flow_table)-1): - start = self.flow_table[j] - end = self.flow_table[j+1] - if end == NULL_INDEX: - end = len(raw_ml) + for start, end in ft: self.flows.append(raw_ml[start:end]) # the first piece represents the xhtml text @@ -290,23 +287,24 @@ class Mobi8Reader(object): def create_guide(self): guide = Guide() - for ref_type, ref_title, fileno in self.guide: + has_start = False + for ref_type, ref_title, pos_fid in self.guide: try: - elem = self.elems[fileno] - except IndexError: - # Happens for thumbnailstandard in Amazon book samples - continue - fi = self.get_file_info(elem.insert_pos) - idtext = self.get_id_tag(elem.insert_pos).decode(self.header.codec) - linktgt = fi.filename + if len(pos_fid) != 2: + continue + except TypeError: + continue # thumbnailstandard record, ignore it + linktgt, idtext = self.get_id_tag_by_pos_fid(*pos_fid) if idtext: linktgt += b'#' + idtext - g = Guide.Reference('%s/%s'%(fi.type, linktgt), os.getcwdu()) + g = Guide.Reference(linktgt, os.getcwdu()) g.title, g.type = ref_title, ref_type + if g.title == 'start' or g.type == 'text': + has_start = True guide.append(g) so = self.header.exth.start_offset - if so not in {None, NULL_INDEX}: + if so not in {None, NULL_INDEX} and not has_start: fi = self.get_file_info(so) if fi.filename is not None: idtext = self.get_id_tag(so).decode(self.header.codec) @@ -446,6 +444,7 @@ class Mobi8Reader(object): current_depth = None parent = ans seen = set() + links = [] for elem in root.iterdescendants(etree.Element): if reached and elem.tag == XHTML('a') and elem.get('href', False): @@ -453,24 +452,32 @@ class Mobi8Reader(object): href, frag = urldefrag(href) href = base_href + '/' + href text = xml2text(elem).strip() - if text in seen: + if (text, href, frag) in seen: continue - seen.add(text) - depth = node_depth(elem) - if current_depth is None: - current_depth = depth - if current_depth == depth: - parent.add_item(href, frag, text) - elif current_depth < depth: - parent = parent[-1] - parent.add_item(href, frag, text) - current_depth = depth - else: - parent = parent.parent - parent.add_item(href, frag, text) - current_depth = depth + seen.add((text, href, frag)) + links.append((text, href, frag, node_depth(elem))) + elif elem is start: + reached = True + + depths = sorted(set(x[-1] for x in links)) + depth_map = {x:i for i, x in enumerate(depths)} + for text, href, frag, depth in links: + depth = depth_map[depth] + if current_depth is None: + current_depth = 0 + parent.add_item(href, frag, text) + elif current_depth == depth: + parent.add_item(href, frag, text) + elif current_depth < depth: + parent = parent[-1] if len(parent) > 0 else parent + parent.add_item(href, frag, text) + current_depth += 1 else: - if elem is start: - reached = True + delta = current_depth - depth + while delta > 0 and parent.parent is not None: + parent = parent.parent + delta -= 1 + parent.add_item(href, frag, text) + current_depth = depth return ans diff --git a/src/calibre/ebooks/mobi/tweak.py b/src/calibre/ebooks/mobi/tweak.py new file mode 100644 index 0000000000..99f3838c93 --- /dev/null +++ b/src/calibre/ebooks/mobi/tweak.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import os, glob + +from calibre import CurrentDir +from calibre.ebooks.mobi import MobiError +from calibre.ebooks.mobi.reader.mobi6 import MobiReader +from calibre.ebooks.mobi.reader.headers import MetadataHeader +from calibre.utils.logging import default_log +from calibre.ebooks import DRMError +from calibre.ebooks.mobi.reader.mobi8 import Mobi8Reader +from calibre.ebooks.conversion.plumber import Plumber, create_oebbook +from calibre.customize.ui import (plugin_for_input_format, + plugin_for_output_format) +from calibre.utils.ipc.simple_worker import fork_job + +class BadFormat(ValueError): + pass + +def do_explode(path, dest): + with open(path, 'rb') as stream: + mr = MobiReader(stream, default_log, None, None) + + with CurrentDir(dest): + mr = Mobi8Reader(mr, default_log) + opf = os.path.abspath(mr()) + try: + os.remove('debug-raw.html') + except: + pass + + return opf + +def explode(path, dest, question=lambda x:True): + with open(path, 'rb') as stream: + raw = stream.read(3) + stream.seek(0) + if raw == b'TPZ': + raise BadFormat(_('This is not a MOBI file. It is a Topaz file.')) + + try: + header = MetadataHeader(stream, default_log) + except MobiError: + raise BadFormat(_('This is not a MOBI file.')) + + if header.encryption_type != 0: + raise DRMError(_('This file is locked with DRM. It cannot be tweaked.')) + + kf8_type = header.kf8_type + + if kf8_type is None: + raise BadFormat(_('This MOBI file does not contain a KF8 format ' + 'book. KF8 is the new format from Amazon. calibre can ' + 'only tweak MOBI files that contain KF8 books. Older ' + 'MOBI files without KF8 are not tweakable.')) + + if kf8_type == 'joint': + if not question(_('This MOBI file contains both KF8 and ' + 'older Mobi6 data. Tweaking it will remove the Mobi6 data, which ' + 'means the file will not be usable on older Kindles. Are you ' + 'sure?')): + return None + + return fork_job('calibre.ebooks.mobi.tweak', 'do_explode', args=(path, + dest), no_output=True)['result'] + +def do_rebuild(opf, dest_path): + plumber = Plumber(opf, dest_path, default_log) + plumber.setup_options() + inp = plugin_for_input_format('azw3') + outp = plugin_for_output_format('azw3') + + plumber.opts.mobi_passthrough = True + oeb = create_oebbook(default_log, opf, plumber.opts) + outp.convert(oeb, dest_path, inp, plumber.opts, default_log) + +def rebuild(src_dir, dest_path): + opf = glob.glob(os.path.join(src_dir, '*.opf')) + if not opf: + raise ValueError('No OPF file found in %s'%src_dir) + opf = opf[0] + fork_job('calibre.ebooks.mobi.tweak', 'do_rebuild', args=(opf, dest_path), + no_output=True) + diff --git a/src/calibre/ebooks/mobi/utils.py b/src/calibre/ebooks/mobi/utils.py index 3530736ba0..ae8e583a1b 100644 --- a/src/calibre/ebooks/mobi/utils.py +++ b/src/calibre/ebooks/mobi/utils.py @@ -7,13 +7,15 @@ __license__ = 'GPL v3' __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import struct, string, imghdr, zlib +import struct, string, imghdr, zlib, os from collections import OrderedDict +from io import BytesIO from calibre.utils.magick.draw import Image, save_cover_data_to, thumbnail from calibre.ebooks import normalize IMAGE_MAX_SIZE = 10 * 1024 * 1024 +RECORD_SIZE = 0x1000 # 4096 (Text record size (uncompressed)) def decode_string(raw, codec='utf-8', ordt_map=''): length, = struct.unpack(b'>B', raw[0]) @@ -364,15 +366,17 @@ def count_set_bits(num): num >>= 1 return ans -def to_base(num, base=32): +def to_base(num, base=32, min_num_digits=None): digits = string.digits + string.ascii_uppercase sign = 1 if num >= 0 else -1 - if num == 0: return '0' + if num == 0: return ('0' if min_num_digits is None else '0'*min_num_digits) num *= sign ans = [] while num: ans.append(digits[(num % base)]) num //= base + if min_num_digits is not None and len(ans) < min_num_digits: + ans.extend('0'*(min_num_digits - len(ans))) if sign < 0: ans.append('-') ans.reverse() @@ -388,27 +392,8 @@ def mobify_image(data): data = im.export('gif') return data -def read_zlib_header(header): - header = bytearray(header) - # See sec 2.2 of RFC 1950 for the zlib stream format - # http://www.ietf.org/rfc/rfc1950.txt - if (header[0]*256 + header[1])%31 != 0: - return None, 'Bad zlib header, FCHECK failed' - - cmf = header[0] & 0b1111 - cinfo = header[0] >> 4 - if cmf != 8: - return None, 'Unknown zlib compression method: %d'%cmf - if cinfo > 7: - return None, 'Invalid CINFO field in zlib header: %d'%cinfo - fdict = (header[1]&0b10000)>>5 - if fdict != 0: - return None, 'FDICT based zlib compression not supported' - wbits = cinfo + 8 - return wbits, None - - -def read_font_record(data, extent=1040): # {{{ +# Font records {{{ +def read_font_record(data, extent=1040): ''' Return the font encoded in the MOBI FONT record represented by data. The return value in a dict with fields raw_data, font_data, err, ext, @@ -466,15 +451,8 @@ def read_font_record(data, extent=1040): # {{{ if flags & 0b1: # ZLIB compressed data - wbits, err = read_zlib_header(font_data[:2]) - if err is not None: - ans['err'] = err - return ans - adler32, = struct.unpack_from(b'>I', font_data, len(font_data) - 4) try: - # remove two bytes of zlib header and 4 bytes of trailing checksum - # negative wbits indicates no standard gzip header - font_data = zlib.decompress(font_data[2:-4], -wbits, usize) + font_data = zlib.decompress(font_data) except Exception as e: ans['err'] = 'Failed to zlib decompress font data (%s)'%e return ans @@ -483,23 +461,146 @@ def read_font_record(data, extent=1040): # {{{ ans['err'] = 'Uncompressed font size mismatch' return ans - if False: - # For some reason these almost never match, probably Amazon has a - # buggy Adler32 implementation - sig = (zlib.adler32(font_data) & 0xffffffff) - if sig != adler32: - ans['err'] = ('Adler checksum did not match. Stored: %d ' - 'Calculated: %d')%(adler32, sig) - return ans - ans['font_data'] = font_data sig = font_data[:4] ans['ext'] = ('ttf' if sig in {b'\0\1\0\0', b'true', b'ttcf'} else 'otf' if sig == b'OTTO' else 'dat') return ans + +def write_font_record(data, obfuscate=True, compress=True): + ''' + Write the ttf/otf font represented by data into a font record. See + read_font_record() for details on the format of the record. + ''' + + flags = 0 + key_len = 20 + usize = len(data) + xor_key = b'' + if compress: + flags |= 0b1 + data = zlib.compress(data, 9) + if obfuscate: + flags |= 0b10 + xor_key = os.urandom(key_len) + key = bytearray(xor_key) + data = bytearray(data) + for i in xrange(1040): + data[i] ^= key[i%key_len] + data = bytes(data) + + key_start = struct.calcsize(b'>5L') + 4 + data_start = key_start + len(xor_key) + + header = b'FONT' + struct.pack(b'>5L', usize, flags, data_start, + len(xor_key), key_start) + + return header + xor_key + data + # }}} +def create_text_record(text): + ''' + Return a Palmdoc record of size RECORD_SIZE from the text file object. + In case the record ends in the middle of a multibyte character return + the overlap as well. + Returns data, overlap: where both are byte strings. overlap is the + extra bytes needed to complete the truncated multibyte character. + ''' + opos = text.tell() + text.seek(0, 2) + # npos is the position of the next record + npos = min((opos + RECORD_SIZE, text.tell())) + # Number of bytes from the next record needed to complete the last + # character in this record + extra = 0 + last = b'' + while not last.decode('utf-8', 'ignore'): + # last contains no valid utf-8 characters + size = len(last) + 1 + text.seek(npos - size) + last = text.read(size) + + # last now has one valid utf-8 char and possibly some bytes that belong + # to a truncated char + + try: + last.decode('utf-8', 'strict') + except UnicodeDecodeError: + # There are some truncated bytes in last + prev = len(last) + while True: + text.seek(npos - prev) + last = text.read(len(last) + 1) + try: + last.decode('utf-8') + except UnicodeDecodeError: + pass + else: + break + extra = len(last) - prev + + text.seek(opos) + data = text.read(RECORD_SIZE) + overlap = text.read(extra) + text.seek(npos) + + return data, overlap + +class CNCX(object): # {{{ + + ''' + Create the CNCX records. These are records containing all the strings from + an index. Each record is of the form: + ''' + + MAX_STRING_LENGTH = 500 + + def __init__(self, strings=()): + self.strings = OrderedDict((s, 0) for s in strings) + + self.records = [] + offset = 0 + buf = BytesIO() + for key in tuple(self.strings.iterkeys()): + utf8 = utf8_text(key[:self.MAX_STRING_LENGTH]) + l = len(utf8) + sz_bytes = encint(l) + raw = sz_bytes + utf8 + if 0xfbf8 - buf.tell() < 6 + len(raw): + # Records in PDB files cannot be larger than 0x10000, so we + # stop well before that. + pad = 0xfbf8 - buf.tell() + buf.write(b'\0' * pad) + self.records.append(buf.getvalue()) + buf.seek(0), buf.truncate(0) + offset = len(self.records) * 0x10000 + buf.write(raw) + self.strings[key] = offset + offset += len(raw) + + val = buf.getvalue() + if val: + self.records.append(align_block(val)) + + def __getitem__(self, string): + return self.strings[string] + + def __bool__(self): + return bool(self.records) + __nonzero__ = __bool__ + + def __len__(self): + return len(self.records) + +# }}} + +def is_guide_ref_start(ref): + return (ref.title.lower() == 'start' or + (ref.type and ref.type.lower() in {'start', + 'other.start', 'text'})) diff --git a/src/calibre/ebooks/mobi/writer2/__init__.py b/src/calibre/ebooks/mobi/writer2/__init__.py index bc8dbbf7de..df3dcefb94 100644 --- a/src/calibre/ebooks/mobi/writer2/__init__.py +++ b/src/calibre/ebooks/mobi/writer2/__init__.py @@ -12,5 +12,4 @@ UNCOMPRESSED = 1 PALMDOC = 2 HUFFDIC = 17480 PALM_MAX_IMAGE_SIZE = 63 * 1024 -RECORD_SIZE = 0x1000 # 4096 (Text record size (uncompressed)) diff --git a/src/calibre/ebooks/mobi/writer2/indexer.py b/src/calibre/ebooks/mobi/writer2/indexer.py index e349172d95..183697a1b4 100644 --- a/src/calibre/ebooks/mobi/writer2/indexer.py +++ b/src/calibre/ebooks/mobi/writer2/indexer.py @@ -12,56 +12,22 @@ from struct import pack from cStringIO import StringIO from collections import OrderedDict, defaultdict -from calibre.ebooks.mobi.writer2 import RECORD_SIZE from calibre.ebooks.mobi.utils import (encint, encode_number_as_hex, - encode_tbs, align_block, utf8_text) + encode_tbs, align_block, RECORD_SIZE, CNCX as CNCX_) -class CNCX(object): # {{{ - - ''' - Create the CNCX records. These are records containing all the strings from - the NCX. Each record is of the form: - ''' - - MAX_STRING_LENGTH = 500 +class CNCX(CNCX_): # {{{ def __init__(self, toc, is_periodical): - self.strings = OrderedDict() - + strings = [] for item in toc.iterdescendants(breadth_first=True): - self.strings[item.title] = 0 + strings.append(item.title) if is_periodical: - self.strings[item.klass] = 0 + strings.append(item.klass) if item.author: - self.strings[item.author] = 0 + strings.append(item.author) if item.description: - self.strings[item.description] = 0 - - self.records = [] - offset = 0 - buf = StringIO() - for key in tuple(self.strings.iterkeys()): - utf8 = utf8_text(key[:self.MAX_STRING_LENGTH]) - l = len(utf8) - sz_bytes = encint(l) - raw = sz_bytes + utf8 - if 0xfbf8 - buf.tell() < 6 + len(raw): - # Records in PDB files cannot be larger than 0x10000, so we - # stop well before that. - pad = 0xfbf8 - buf.tell() - buf.write(b'\0' * pad) - self.records.append(buf.getvalue()) - buf.truncate(0) - offset = len(self.records) * 0x10000 - buf.write(raw) - self.strings[key] = offset - offset += len(raw) - - self.records.append(align_block(buf.getvalue())) - - def __getitem__(self, string): - return self.strings[string] + strings.append(item.description) + CNCX_.__init__(self, strings) # }}} class TAGX(object): # {{{ @@ -534,14 +500,14 @@ class Indexer(object): # {{{ # Write offsets to index entries as an IDXT block idxt_block = b'IDXT' - buf.truncate(0) + buf.seek(0), buf.truncate(0) for offset in offsets: buf.write(pack(b'>H', header_length+offset)) idxt_block = align_block(idxt_block + buf.getvalue()) body = index_block + idxt_block header = b'INDX' - buf.truncate(0) + buf.seek(0), buf.truncate(0) buf.write(pack(b'>I', header_length)) buf.write(b'\0'*4) # Unknown buf.write(pack(b'>I', 1)) # Header type? Or index record number? diff --git a/src/calibre/ebooks/mobi/writer2/main.py b/src/calibre/ebooks/mobi/writer2/main.py index 99321fab12..9afd39a211 100644 --- a/src/calibre/ebooks/mobi/writer2/main.py +++ b/src/calibre/ebooks/mobi/writer2/main.py @@ -7,51 +7,40 @@ __license__ = 'GPL v3' __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import re, random, time +import random, time from cStringIO import StringIO from struct import pack -from calibre.ebooks import normalize, generate_masthead -from calibre.ebooks.oeb.base import OEB_RASTER_IMAGES +from calibre.ebooks import normalize from calibre.ebooks.mobi.writer2.serializer import Serializer from calibre.ebooks.compression.palmdoc import compress_doc from calibre.ebooks.mobi.langcodes import iana2mobi from calibre.utils.filenames import ascii_filename -from calibre.ebooks.mobi.writer2 import (PALMDOC, UNCOMPRESSED, RECORD_SIZE) -from calibre.ebooks.mobi.utils import (rescale_image, encint, mobify_image, - encode_trailing_data, align_block, detect_periodical) +from calibre.ebooks.mobi.writer2 import (PALMDOC, UNCOMPRESSED) +from calibre.ebooks.mobi.utils import (encint, encode_trailing_data, + align_block, detect_periodical, RECORD_SIZE, create_text_record) from calibre.ebooks.mobi.writer2.indexer import Indexer -from calibre.ebooks.mobi import MAX_THUMB_DIMEN, MAX_THUMB_SIZE - -EXTH_CODES = { - 'creator': 100, - 'publisher': 101, - 'description': 103, - 'identifier': 104, - 'subject': 105, - 'pubdate': 106, - 'review': 107, - 'contributor': 108, - 'rights': 109, - 'type': 111, - 'source': 112, - 'versionnumber': 114, - 'startreading': 116, - 'coveroffset': 201, - 'thumboffset': 202, - 'hasfakecover': 203, - 'lastupdatetime': 502, - 'title': 503, - } # Disabled as I dont care about uncrossable breaks WRITE_UNCROSSABLE_BREAKS = False +NULL_INDEX = 0xffffffff + +FLIS = (b'FLIS\0\0\0\x08\0\x41\0\0\0\0\0\0\xff\xff\xff\xff\0\x01\0\x03\0\0\0\x03\0\0\0\x01'+ + b'\xff'*4) + +def fcis(text_length): + fcis = b'FCIS\x00\x00\x00\x14\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00' + fcis += pack(b'>I', text_length) + fcis += b'\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x08\x00\x01\x00\x01\x00\x00\x00\x00' + return fcis class MobiWriter(object): - COLLAPSE_RE = re.compile(r'[ \t\r\n\v]+') - def __init__(self, opts, write_page_breaks_after_item=True): + def __init__(self, opts, resources, kf8, write_page_breaks_after_item=True): self.opts = opts + self.resources = resources + self.kf8 = kf8 + self.for_joint = kf8 is not None self.write_page_breaks_after_item = write_page_breaks_after_item self.compression = UNCOMPRESSED if opts.dont_compress else PALMDOC self.prefer_author_sort = opts.prefer_author_sort @@ -83,7 +72,7 @@ class MobiWriter(object): self.stream = stream self.records = [None] self.generate_content() - self.generate_record0() + self.generate_joint_record0() if self.for_joint else self.generate_record0() self.write_header() self.write_content() @@ -151,73 +140,19 @@ class MobiWriter(object): # Images {{{ def generate_images(self): - oeb = self.oeb - oeb.logger.info('Serializing images...') - self.image_records = [] - self.image_map = {} - self.masthead_offset = 0 - index = 1 + resources = self.resources + image_records = resources.records + self.image_map = resources.item_map + self.masthead_offset = resources.masthead_offset + self.cover_offset = resources.cover_offset + self.thumbnail_offset = resources.thumbnail_offset - mh_href = None - if 'masthead' in oeb.guide and oeb.guide['masthead'].href: - mh_href = oeb.guide['masthead'].href - self.image_records.append(None) - index += 1 - elif self.is_periodical: - # Generate a default masthead - data = generate_masthead(unicode(self.oeb.metadata['title'][0])) - self.image_records.append(data) - index += 1 - - cover_href = self.cover_offset = self.thumbnail_offset = None - if (oeb.metadata.cover and - unicode(oeb.metadata.cover[0]) in oeb.manifest.ids): - cover_id = unicode(oeb.metadata.cover[0]) - item = oeb.manifest.ids[cover_id] - cover_href = item.href - - for item in self.oeb.manifest.values(): - if item.media_type not in OEB_RASTER_IMAGES: continue - try: - data = item.data - if self.opts.mobi_keep_original_images: - data = mobify_image(data) - else: - data = rescale_image(data) - except: - oeb.logger.warn('Bad image file %r' % item.href) - continue - else: - if mh_href and item.href == mh_href: - self.image_records[0] = data - continue - - self.image_records.append(data) - self.image_map[item.href] = index - index += 1 - - if cover_href and item.href == cover_href: - self.cover_offset = self.image_map[item.href] - 1 - try: - data = rescale_image(item.data, dimen=MAX_THUMB_DIMEN, - maxsizeb=MAX_THUMB_SIZE) - except: - oeb.logger.warn('Failed to generate thumbnail') - else: - self.image_records.append(data) - self.thumbnail_offset = index - 1 - index += 1 - finally: - item.unload_data_from_memory() - - if self.image_records and self.image_records[0] is None: + if image_records and image_records[0] is None: raise ValueError('Failed to find masthead image in manifest') # }}} - # Text {{{ - - def generate_text(self): + def generate_text(self): # {{{ self.oeb.logger.info('Serializing markup content...') self.serializer = Serializer(self.oeb, self.image_map, self.is_periodical, @@ -232,7 +167,7 @@ class MobiWriter(object): self.oeb.logger.info(' Compressing markup content...') while text.tell() < self.text_length: - data, overlap = self.read_text_record(text) + data, overlap = create_text_record(text) if self.compression == PALMDOC: data = compress_doc(data) @@ -249,57 +184,6 @@ class MobiWriter(object): if records_size % 4 != 0: self.records.append(b'\x00'*(records_size % 4)) self.first_non_text_record_idx += 1 - - def read_text_record(self, text): - ''' - Return a Palmdoc record of size RECORD_SIZE from the text file object. - In case the record ends in the middle of a multibyte character return - the overlap as well. - - Returns data, overlap: where both are byte strings. overlap is the - extra bytes needed to complete the truncated multibyte character. - ''' - opos = text.tell() - text.seek(0, 2) - # npos is the position of the next record - npos = min((opos + RECORD_SIZE, text.tell())) - # Number of bytes from the next record needed to complete the last - # character in this record - extra = 0 - - last = b'' - while not last.decode('utf-8', 'ignore'): - # last contains no valid utf-8 characters - size = len(last) + 1 - text.seek(npos - size) - last = text.read(size) - - # last now has one valid utf-8 char and possibly some bytes that belong - # to a truncated char - - try: - last.decode('utf-8', 'strict') - except UnicodeDecodeError: - # There are some truncated bytes in last - prev = len(last) - while True: - text.seek(npos - prev) - last = text.read(len(last) + 1) - try: - last.decode('utf-8') - except UnicodeDecodeError: - pass - else: - break - extra = len(last) - prev - - text.seek(opos) - data = text.read(RECORD_SIZE) - overlap = text.read(extra) - text.seek(npos) - - return data, overlap - # }}} def generate_record0(self): # MOBI header {{{ @@ -315,23 +199,27 @@ class MobiWriter(object): # header as well bt = 0x103 if self.indexer.is_flat_periodical else 0x101 - exth = self.build_exth(bt) + from calibre.ebooks.mobi.writer8.exth import build_exth + exth = build_exth(metadata, + prefer_author_sort=self.opts.prefer_author_sort, + is_periodical=self.is_periodical, + share_not_sync=self.opts.share_not_sync, + cover_offset=self.cover_offset, + thumbnail_offset=self.thumbnail_offset, + start_offset=self.serializer.start_offset, mobi_doctype=bt + ) first_image_record = None - if self.image_records: + if self.resources: + used_images = self.serializer.used_images first_image_record = len(self.records) - self.records.extend(self.image_records) + self.resources.serialize(self.records, used_images) last_content_record = len(self.records) - 1 # FCIS/FLIS (Seems to serve no purpose) flis_number = len(self.records) - self.records.append( - b'FLIS\0\0\0\x08\0\x41\0\0\0\0\0\0\xff\xff\xff\xff\0\x01\0\x03\0\0\0\x03\0\0\0\x01'+ - b'\xff'*4) - fcis = b'FCIS\x00\x00\x00\x14\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00' - fcis += pack(b'>I', self.text_length) - fcis += b'\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x08\x00\x01\x00\x01\x00\x00\x00\x00' + self.records.append(FLIS) fcis_number = len(self.records) - self.records.append(fcis) + self.records.append(fcis(self.text_length)) # EOF record self.records.append(b'\xE9\x8E\x0D\x0A') @@ -481,125 +369,80 @@ class MobiWriter(object): self.records[0] = align_block(record0) # }}} - def build_exth(self, mobi_doctype): # EXTH Header {{{ - oeb = self.oeb - exth = StringIO() - nrecs = 0 - for term in oeb.metadata: - if term not in EXTH_CODES: continue - code = EXTH_CODES[term] - items = oeb.metadata[term] - if term == 'creator': - if self.prefer_author_sort: - creators = [normalize(unicode(c.file_as or c)) for c in - items][:1] - else: - creators = [normalize(unicode(c)) for c in items] - items = ['; '.join(creators)] - for item in items: - data = normalize(unicode(item)) - if term != 'description': - data = self.COLLAPSE_RE.sub(' ', data) - if term == 'identifier': - if data.lower().startswith('urn:isbn:'): - data = data[9:] - elif item.scheme.lower() == 'isbn': - pass - else: - continue - data = data.encode('utf-8') - exth.write(pack(b'>II', code, len(data) + 8)) - exth.write(data) - nrecs += 1 - if term == 'rights' : - try: - rights = normalize(unicode(oeb.metadata.rights[0])).encode('utf-8') - except: - rights = b'Unknown' - exth.write(pack(b'>II', EXTH_CODES['rights'], len(rights) + 8)) - exth.write(rights) - nrecs += 1 + def generate_joint_record0(self): # {{{ + from calibre.ebooks.mobi.writer8.mobi import (MOBIHeader, + HEADER_FIELDS) + from calibre.ebooks.mobi.writer8.exth import build_exth - # Write UUID as ASIN - uuid = None - from calibre.ebooks.oeb.base import OPF - for x in oeb.metadata['identifier']: - if (x.get(OPF('scheme'), None).lower() == 'uuid' or - unicode(x).startswith('urn:uuid:')): - uuid = unicode(x).split(':')[-1] - break - if uuid is None: - from uuid import uuid4 - uuid = str(uuid4()) + # Insert resource records + first_image_record = None + old = len(self.records) + if self.resources: + used_images = self.serializer.used_images | self.kf8.used_images + first_image_record = len(self.records) + self.resources.serialize(self.records, used_images) + resource_record_count = len(self.records) - old - if isinstance(uuid, unicode): - uuid = uuid.encode('utf-8') - if not self.opts.share_not_sync: - exth.write(pack(b'>II', 113, len(uuid) + 8)) - exth.write(uuid) - nrecs += 1 + # FCIS/FLIS (Seems to serve no purpose) + flis_number = len(self.records) + self.records.append(FLIS) + fcis_number = len(self.records) + self.records.append(fcis(self.text_length)) - # Write cdetype - if not self.is_periodical: - if not self.opts.share_not_sync: - exth.write(pack(b'>II', 501, 12)) - exth.write(b'EBOK') - nrecs += 1 - else: - ids = {0x101:b'NWPR', 0x103:b'MAGZ'}.get(mobi_doctype, None) - if ids: - exth.write(pack(b'>II', 501, 12)) - exth.write(ids) - nrecs += 1 + # Insert KF8 records + self.records.append(b'BOUNDARY') + kf8_header_index = len(self.records) + self.kf8.start_offset = (self.serializer.start_offset, + self.kf8.start_offset) + self.records.append(self.kf8.record0) + self.records.extend(self.kf8.records[1:]) - # Add a publication date entry - if oeb.metadata['date']: - datestr = str(oeb.metadata['date'][0]) - elif oeb.metadata['timestamp']: - datestr = str(oeb.metadata['timestamp'][0]) + first_image_record = (first_image_record if first_image_record else + len(self.records)) - if datestr is None: - raise ValueError("missing date or timestamp") + header_fields = {k:getattr(self.kf8, k) for k in HEADER_FIELDS} - datestr = bytes(datestr) - exth.write(pack(b'>II', EXTH_CODES['pubdate'], len(datestr) + 8)) - exth.write(datestr) - nrecs += 1 - if self.is_periodical: - exth.write(pack(b'>II', EXTH_CODES['lastupdatetime'], len(datestr) + 8)) - exth.write(datestr) - nrecs += 1 + # Now change the header fields that need to be different in the MOBI 6 + # header + header_fields['first_resource_record'] = first_image_record + header_fields['exth_flags'] = 0b100001010000 # Kinglegen uses this + header_fields['fdst_record'] = NULL_INDEX + header_fields['fdst_count'] = 1 # Why not 0? Kindlegen uses 1 + header_fields['flis_record'] = flis_number + header_fields['fcis_record'] = fcis_number + extra_data_flags = 0b1 # Has multibyte overlap bytes + if self.primary_index_record_idx is not None: + extra_data_flags |= 0b10 + header_fields['extra_data_flags'] = extra_data_flags - if self.is_periodical: - # Pretend to be amazon's super secret periodical generator - vals = {204:201, 205:2, 206:0, 207:101} - else: - # Pretend to be kindlegen 1.2 - vals = {204:201, 205:1, 206:2, 207:33307} - for code, val in vals.iteritems(): - exth.write(pack(b'>III', code, 12, val)) - nrecs += 1 + for k, v in {'last_text_record':'last_text_record_idx', + 'first_non_text_record':'first_non_text_record_idx', + 'ncx_index':'primary_index_record_idx', + }.iteritems(): + header_fields[k] = getattr(self, v) + if header_fields['ncx_index'] is None: + header_fields['ncx_index'] = NULL_INDEX - if self.cover_offset is not None: - exth.write(pack(b'>III', EXTH_CODES['coveroffset'], 12, - self.cover_offset)) - exth.write(pack(b'>III', EXTH_CODES['hasfakecover'], 12, 0)) - nrecs += 2 - if self.thumbnail_offset is not None: - exth.write(pack(b'>III', EXTH_CODES['thumboffset'], 12, - self.thumbnail_offset)) - nrecs += 1 + for x in ('skel', 'chunk', 'guide'): + header_fields[x+'_index'] = NULL_INDEX - if self.serializer.start_offset is not None: - exth.write(pack(b'>III', EXTH_CODES['startreading'], 12, - self.serializer.start_offset)) - nrecs += 1 + # Create the MOBI 6 EXTH + opts = self.opts + kuc = 0 if resource_record_count > 0 else None + + header_fields['exth'] = build_exth(self.oeb.metadata, + prefer_author_sort=opts.prefer_author_sort, + is_periodical=opts.mobi_periodical, + share_not_sync=opts.share_not_sync, + cover_offset=self.cover_offset, + thumbnail_offset=self.thumbnail_offset, + num_of_resources=resource_record_count, + kf8_unknown_count=kuc, be_kindlegen2=True, + kf8_header_index=kf8_header_index, + start_offset=self.serializer.start_offset, + mobi_doctype=2) + self.records[0] = MOBIHeader(file_version=6)(**header_fields) - exth = exth.getvalue() - trail = len(exth) % 4 - pad = b'\0' * (4 - trail) # Always pad w/ at least 1 byte - exth = [b'EXTH', pack(b'>II', len(exth) + 12, nrecs), exth, pad] - return b''.join(exth) # }}} def write_header(self): # PalmDB header {{{ diff --git a/src/calibre/ebooks/mobi/writer2/resources.py b/src/calibre/ebooks/mobi/writer2/resources.py new file mode 100644 index 0000000000..2f12793b03 --- /dev/null +++ b/src/calibre/ebooks/mobi/writer2/resources.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import imghdr + +from calibre.ebooks.mobi import MAX_THUMB_DIMEN, MAX_THUMB_SIZE +from calibre.ebooks.mobi.utils import (rescale_image, mobify_image, + write_font_record) +from calibre.ebooks import generate_masthead +from calibre.ebooks.oeb.base import OEB_RASTER_IMAGES + +PLACEHOLDER_GIF = b'GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00@\x02\x01D\x00;' + +class Resources(object): + + def __init__(self, oeb, opts, is_periodical, add_fonts=False, + process_images=True): + self.oeb, self.log, self.opts = oeb, oeb.log, opts + self.is_periodical = is_periodical + self.process_images = process_images + + self.item_map = {} + self.records = [] + self.mime_map = {} + self.masthead_offset = 0 + self.used_image_indices = set() + self.image_indices = set() + self.cover_offset = self.thumbnail_offset = None + + self.add_resources(add_fonts) + + def process_image(self, data): + if not self.process_images: + return data + return (mobify_image(data) if self.opts.mobi_keep_original_images else + rescale_image(data)) + + def add_resources(self, add_fonts): + oeb = self.oeb + oeb.logger.info('Serializing resources...') + index = 1 + + mh_href = None + if 'masthead' in oeb.guide and oeb.guide['masthead'].href: + mh_href = oeb.guide['masthead'].href + self.records.append(None) + index += 1 + self.used_image_indices.add(0) + self.image_indices.add(0) + elif self.is_periodical: + # Generate a default masthead + data = generate_masthead(unicode(self.oeb.metadata['title'][0])) + self.records.append(data) + self.used_image_indices.add(0) + self.image_indices.add(0) + index += 1 + + cover_href = self.cover_offset = self.thumbnail_offset = None + if (oeb.metadata.cover and + unicode(oeb.metadata.cover[0]) in oeb.manifest.ids): + cover_id = unicode(oeb.metadata.cover[0]) + item = oeb.manifest.ids[cover_id] + cover_href = item.href + + for item in self.oeb.manifest.values(): + if item.media_type not in OEB_RASTER_IMAGES: continue + try: + data = self.process_image(item.data) + except: + self.log.warn('Bad image file %r' % item.href) + continue + else: + if mh_href and item.href == mh_href: + self.records[0] = data + continue + + self.image_indices.add(len(self.records)) + self.records.append(data) + self.item_map[item.href] = index + self.mime_map[item.href] = 'image/%s'%imghdr.what(None, data) + index += 1 + + if cover_href and item.href == cover_href: + self.cover_offset = self.item_map[item.href] - 1 + self.used_image_indices.add(self.cover_offset) + try: + data = rescale_image(item.data, dimen=MAX_THUMB_DIMEN, + maxsizeb=MAX_THUMB_SIZE) + except: + self.log.warn('Failed to generate thumbnail') + else: + self.image_indices.add(len(self.records)) + self.records.append(data) + self.thumbnail_offset = index - 1 + self.used_image_indices.add(self.thumbnail_offset) + index += 1 + finally: + item.unload_data_from_memory() + + if add_fonts: + for item in self.oeb.manifest.values(): + if item.href and item.href.rpartition('.')[-1].lower() in { + 'ttf', 'otf'} and isinstance(item.data, bytes): + self.records.append(write_font_record(item.data)) + self.item_map[item.href] = len(self.records) + + def add_extra_images(self): + ''' + Add any images that were created after the call to add_resources() + ''' + for item in self.oeb.manifest.values(): + if (item.media_type not in OEB_RASTER_IMAGES or item.href in + self.item_map): continue + try: + data = self.process_image(item.data) + except: + self.log.warn('Bad image file %r' % item.href) + else: + self.records.append(data) + self.item_map[item.href] = len(self.records) + finally: + item.unload_data_from_memory() + + def serialize(self, records, used_images): + used_image_indices = self.used_image_indices | { + v-1 for k, v in self.item_map.iteritems() if k in used_images} + for i in self.image_indices-used_image_indices: + self.records[i] = PLACEHOLDER_GIF + records.extend(self.records) + + def __bool__(self): + return bool(self.records) + __nonzero__ = __bool__ + diff --git a/src/calibre/ebooks/mobi/writer2/serializer.py b/src/calibre/ebooks/mobi/writer2/serializer.py index b35f33439b..2dda657a93 100644 --- a/src/calibre/ebooks/mobi/writer2/serializer.py +++ b/src/calibre/ebooks/mobi/writer2/serializer.py @@ -12,6 +12,7 @@ import re from calibre.ebooks.oeb.base import (OEB_DOCS, XHTML, XHTML_NS, XML_NS, namespace, prefixname, urlnormalize) from calibre.ebooks.mobi.mobiml import MBP_NS +from calibre.ebooks.mobi.utils import is_guide_ref_start from collections import defaultdict from urlparse import urldefrag @@ -39,6 +40,7 @@ class Serializer(object): self.oeb = oeb # Map of image hrefs to image index in the MOBI file self.images = images + self.used_images = set() self.logger = oeb.logger self.is_periodical = is_periodical self.write_page_breaks_after_item = write_page_breaks_after_item @@ -160,9 +162,7 @@ class Serializer(object): buf.write(b'title="') self.serialize_text(ref.title, quot=True) buf.write(b'" ') - if (ref.title.lower() == 'start' or - (ref.type and ref.type.lower() in {'start', - 'other.start', 'text'})): + if is_guide_ref_start(ref): self._start_href = ref.href self.serialize_href(ref.href) # Space required or won't work, I kid you not @@ -329,6 +329,7 @@ class Serializer(object): href = urlnormalize(item.abshref(val)) if href in self.images: index = self.images[href] + self.used_images.add(href) buf.write(b'recindex="%05d"' % index) continue buf.write(attr.encode('utf-8')) diff --git a/src/calibre/ebooks/mobi/writer8/__init__.py b/src/calibre/ebooks/mobi/writer8/__init__.py new file mode 100644 index 0000000000..dd9615356c --- /dev/null +++ b/src/calibre/ebooks/mobi/writer8/__init__.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + + + diff --git a/src/calibre/ebooks/mobi/writer8/cleanup.py b/src/calibre/ebooks/mobi/writer8/cleanup.py new file mode 100644 index 0000000000..b233ea04ba --- /dev/null +++ b/src/calibre/ebooks/mobi/writer8/cleanup.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from calibre.ebooks.oeb.base import XPath + +class CSSCleanup(object): + + def __init__(self, log, opts): + self.log, self.opts = log, opts + + def __call__(self, item, stylizer): + if not hasattr(item.data, 'xpath'): return + + # The Kindle touch displays all black pages if the height is set on + # body + for body in XPath('//h:body')(item.data): + style = stylizer.style(body) + style.drop('height') + diff --git a/src/calibre/ebooks/mobi/writer8/exth.py b/src/calibre/ebooks/mobi/writer8/exth.py new file mode 100644 index 0000000000..361b978528 --- /dev/null +++ b/src/calibre/ebooks/mobi/writer8/exth.py @@ -0,0 +1,188 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import re +from struct import pack +from io import BytesIO + +from calibre.ebooks.mobi.utils import utf8_text + +EXTH_CODES = { + 'creator': 100, + 'publisher': 101, + 'description': 103, + 'identifier': 104, + 'subject': 105, + 'pubdate': 106, + 'review': 107, + 'contributor': 108, + 'rights': 109, + 'type': 111, + 'source': 112, + 'versionnumber': 114, + 'startreading': 116, + 'kf8_header_index': 121, + 'num_of_resources': 125, + 'kf8_unknown_count': 131, + 'coveroffset': 201, + 'thumboffset': 202, + 'hasfakecover': 203, + 'lastupdatetime': 502, + 'title': 503, +} + +COLLAPSE_RE = re.compile(r'[ \t\r\n\v]+') + +def build_exth(metadata, prefer_author_sort=False, is_periodical=False, + share_not_sync=True, cover_offset=None, thumbnail_offset=None, + start_offset=None, mobi_doctype=2, num_of_resources=None, + kf8_unknown_count=0, be_kindlegen2=False, kf8_header_index=None): + exth = BytesIO() + nrecs = 0 + + for term in metadata: + if term not in EXTH_CODES: continue + code = EXTH_CODES[term] + items = metadata[term] + if term == 'creator': + if prefer_author_sort: + creators = [unicode(c.file_as or c) for c in + items][:1] + else: + creators = [unicode(c) for c in items] + items = ['; '.join(creators)] + for item in items: + data = unicode(item) + if term != 'description': + data = COLLAPSE_RE.sub(' ', data) + if term == 'identifier': + if data.lower().startswith('urn:isbn:'): + data = data[9:] + elif item.scheme.lower() == 'isbn': + pass + else: + continue + data = utf8_text(data) + exth.write(pack(b'>II', code, len(data) + 8)) + exth.write(data) + nrecs += 1 + if term == 'rights' : + try: + rights = utf8_text(unicode(metadata.rights[0])) + except: + rights = b'Unknown' + exth.write(pack(b'>II', EXTH_CODES['rights'], len(rights) + 8)) + exth.write(rights) + nrecs += 1 + + # Write UUID as ASIN + uuid = None + from calibre.ebooks.oeb.base import OPF + for x in metadata['identifier']: + if (x.get(OPF('scheme'), None).lower() == 'uuid' or + unicode(x).startswith('urn:uuid:')): + uuid = unicode(x).split(':')[-1] + break + if uuid is None: + from uuid import uuid4 + uuid = str(uuid4()) + + if isinstance(uuid, unicode): + uuid = uuid.encode('utf-8') + if not share_not_sync: + exth.write(pack(b'>II', 113, len(uuid) + 8)) + exth.write(uuid) + nrecs += 1 + + # Write cdetype + if not is_periodical: + if not share_not_sync: + exth.write(pack(b'>II', 501, 12)) + exth.write(b'EBOK') + nrecs += 1 + else: + ids = {0x101:b'NWPR', 0x103:b'MAGZ'}.get(mobi_doctype, None) + if ids: + exth.write(pack(b'>II', 501, 12)) + exth.write(ids) + nrecs += 1 + + # Add a publication date entry + if metadata['date']: + datestr = str(metadata['date'][0]) + elif metadata['timestamp']: + datestr = str(metadata['timestamp'][0]) + + if datestr is None: + raise ValueError("missing date or timestamp") + + datestr = bytes(datestr) + exth.write(pack(b'>II', EXTH_CODES['pubdate'], len(datestr) + 8)) + exth.write(datestr) + nrecs += 1 + if is_periodical: + exth.write(pack(b'>II', EXTH_CODES['lastupdatetime'], len(datestr) + 8)) + exth.write(datestr) + nrecs += 1 + + if be_kindlegen2: + vals = {204:201, 205:2, 206:2, 207:35621} + elif is_periodical: + # Pretend to be amazon's super secret periodical generator + vals = {204:201, 205:2, 206:0, 207:101} + else: + # Pretend to be kindlegen 1.2 + vals = {204:201, 205:1, 206:2, 207:33307} + for code, val in vals.iteritems(): + exth.write(pack(b'>III', code, 12, val)) + nrecs += 1 + + if cover_offset is not None: + exth.write(pack(b'>III', EXTH_CODES['coveroffset'], 12, + cover_offset)) + exth.write(pack(b'>III', EXTH_CODES['hasfakecover'], 12, 0)) + nrecs += 2 + if thumbnail_offset is not None: + exth.write(pack(b'>III', EXTH_CODES['thumboffset'], 12, + thumbnail_offset)) + nrecs += 1 + + if start_offset is not None: + try: + len(start_offset) + except TypeError: + start_offset = [start_offset] + for so in start_offset: + if so is not None: + exth.write(pack(b'>III', EXTH_CODES['startreading'], 12, + so)) + nrecs += 1 + + if kf8_header_index is not None: + exth.write(pack(b'>III', EXTH_CODES['kf8_header_index'], 12, + kf8_header_index)) + nrecs += 1 + + if num_of_resources is not None: + exth.write(pack(b'>III', EXTH_CODES['num_of_resources'], 12, + num_of_resources)) + nrecs += 1 + + if kf8_unknown_count is not None: + exth.write(pack(b'>III', EXTH_CODES['kf8_unknown_count'], 12, + kf8_unknown_count)) + nrecs += 1 + + exth = exth.getvalue() + trail = len(exth) % 4 + pad = b'\0' * (4 - trail) # Always pad w/ at least 1 byte + exth = [b'EXTH', pack(b'>II', len(exth) + 12, nrecs), exth, pad] + return b''.join(exth) + + diff --git a/src/calibre/ebooks/mobi/writer8/header.py b/src/calibre/ebooks/mobi/writer8/header.py new file mode 100644 index 0000000000..94ae722f59 --- /dev/null +++ b/src/calibre/ebooks/mobi/writer8/header.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import random +from io import BytesIO +from collections import OrderedDict +from struct import pack + +from calibre.ebooks.mobi.utils import align_block + +NULL = 0xffffffff +zeroes = lambda x: b'\0'*x +nulls = lambda x: b'\xff'*x +short = lambda x: pack(b'>H', x) + +class Header(OrderedDict): + + HEADER_NAME = b'' + + DEFINITION = ''' + ''' + + ALIGN_BLOCK = False + POSITIONS = {} # Mapping of position field to field whose position should + # be stored in the position field + SHORT_FIELDS = set() + + def __init__(self): + OrderedDict.__init__(self) + + for line in self.DEFINITION.splitlines(): + line = line.strip() + if not line or line.startswith('#'): continue + name, val = [x.strip() for x in line.partition('=')[0::2]] + if val: + val = eval(val, {'zeroes':zeroes, 'NULL':NULL, 'DYN':None, + 'nulls':nulls, 'short':short, 'random':random}) + else: + val = 0 + if name in self: + raise ValueError('Duplicate field in definition: %r'%name) + self[name] = val + + @property + def dynamic_fields(self): + return tuple(k for k, v in self.iteritems() if v is None) + + def __call__(self, **kwargs): + positions = {} + for name, val in kwargs.iteritems(): + if name not in self: + raise KeyError('Not a valid header field: %r'%name) + self[name] = val + + buf = BytesIO() + buf.write(bytes(self.HEADER_NAME)) + for name, val in self.iteritems(): + val = self.format_value(name, val) + positions[name] = buf.tell() + if val is None: + raise ValueError('Dynamic field %r not set'%name) + if isinstance(val, (int, long)): + fmt = 'H' if name in self.SHORT_FIELDS else 'I' + val = pack(b'>'+fmt, val) + buf.write(val) + + for pos_field, field in self.POSITIONS.iteritems(): + buf.seek(positions[pos_field]) + buf.write(pack(b'>I', positions[field])) + + ans = buf.getvalue() + if self.ALIGN_BLOCK: + ans = align_block(ans) + return ans + + + def format_value(self, name, val): + return val + + diff --git a/src/calibre/ebooks/mobi/writer8/index.py b/src/calibre/ebooks/mobi/writer8/index.py new file mode 100644 index 0000000000..c37afb81ff --- /dev/null +++ b/src/calibre/ebooks/mobi/writer8/index.py @@ -0,0 +1,335 @@ +#!/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) +from future_builtins import map + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from collections import namedtuple +from struct import pack +from io import BytesIO + +from calibre.ebooks.mobi.utils import CNCX, encint, align_block +from calibre.ebooks.mobi.writer8.header import Header + +TagMeta_ = namedtuple('TagMeta', + 'name number values_per_entry bitmask end_flag') +TagMeta = lambda x:TagMeta_(*x) +EndTagTable = TagMeta(('eof', 0, 0, 0, 1)) + +# map of mask to number of shifts needed, works with 1 bit and two-bit wide masks +# could also be extended to 4 bit wide ones as well +mask_to_bit_shifts = { 1:0, 2:1, 3:0, 4:2, 8:3, 12:2, 16:4, 32:5, 48:4, 64:6, + 128:7, 192: 6 } + +class IndexHeader(Header): # {{{ + + HEADER_NAME = b'INDX' + ALIGN_BLOCK = True + HEADER_LENGTH = 192 + + DEFINITION = ''' + # 4 - 8: Header Length + header_length = {header_length} + + # 8 - 16: Unknown + unknown1 = zeroes(8) + + # 16 - 20: Index type: 0 - normal 2 - inflection + type = 2 + + # 20 - 24: IDXT offset (filled in later) + idxt_offset + + # 24 - 28: Number of index records + num_of_records = 1 + + # 28 - 32: Index encoding (65001 = utf-8) + encoding = 65001 + + # 32 - 36: Unknown + unknown2 = NULL + + # 36 - 40: Number of Index entries + num_of_entries = DYN + + # 40 - 44: ORDT offset + ordt_offset + + # 44 - 48: LIGT offset + ligt_offset + + # 48 - 52: Number of ORDT/LIGT? entries + num_of_ordt_entries + + # 52 - 56: Number of CNCX records + num_of_cncx = DYN + + # 56 - 180: Unknown + unknown3 = zeroes(124) + + # 180 - 184: TAGX offset + tagx_offset = {header_length} + + # 184 - 192: Unknown + unknown4 = zeroes(8) + + # TAGX + tagx = DYN + + # Last Index entry + last_index = DYN + + # IDXT + idxt = DYN + '''.format(header_length=HEADER_LENGTH) + + POSITIONS = {'idxt_offset':'idxt'} +# }}} + +class Index(object): # {{{ + + control_byte_count = 1 + cncx = CNCX() + tag_types = (EndTagTable,) + + HEADER_LENGTH = IndexHeader.HEADER_LENGTH + + @classmethod + def generate_tagx(cls): + header = b'TAGX' + byts = bytearray() + for tag_meta in cls.tag_types: + byts.extend(tag_meta[1:]) + # table length, control byte count + header += pack(b'>II', 12+len(byts), cls.control_byte_count) + return header + bytes(byts) + + @classmethod + def calculate_control_bytes_for_each_entry(cls, entries): + control_bytes = [] + for lead_text, tags in entries: + cbs = [] + ans = 0 + for (name, number, vpe, mask, endi) in cls.tag_types: + if endi == 1: + cbs.append(ans) + ans = 0 + continue + try: + nvals = len(tags.get(name, ())) + except TypeError: + nvals = 1 + nentries = nvals // vpe + shifts = mask_to_bit_shifts[mask] + ans |= mask & (nentries << shifts) + if len(cbs) != cls.control_byte_count: + raise ValueError('The entry %r is invalid'%[lead_text, tags]) + control_bytes.append(cbs) + return control_bytes + + def __call__(self): + self.control_bytes = self.calculate_control_bytes_for_each_entry( + self.entries) + + rendered_entries = [] + index, idxt, buf = BytesIO(), BytesIO(), BytesIO() + IndexEntry = namedtuple('IndexEntry', 'offset length raw') + last_lead_text = b'' + too_large = ValueError('Index has too many entries, calibre does not' + ' support generating multiple index records at this' + ' time.') + + for i, x in enumerate(self.entries): + control_bytes = self.control_bytes[i] + leading_text, tags = x + buf.seek(0), buf.truncate(0) + leading_text = (leading_text.encode('utf-8') if + isinstance(leading_text, unicode) else leading_text) + raw = bytearray(leading_text) + raw.insert(0, len(leading_text)) + buf.write(bytes(raw)) + buf.write(bytes(bytearray(control_bytes))) + for tag in self.tag_types: + values = tags.get(tag.name, None) + if values is None: continue + try: + len(values) + except TypeError: + values = [values] + if values: + for val in values: + try: + buf.write(encint(val)) + except ValueError: + raise ValueError('Invalid values for %r: %r'%( + tag, values)) + raw = buf.getvalue() + offset = index.tell() + if offset + self.HEADER_LENGTH >= 0x10000: + raise too_large + rendered_entries.append(IndexEntry(offset, len(raw), raw)) + idxt.write(pack(b'>H', self.HEADER_LENGTH+offset)) + index.write(raw) + last_lead_text = leading_text + + index_block = align_block(index.getvalue()) + idxt_block = align_block(b'IDXT' + idxt.getvalue()) + body = index_block + idxt_block + if len(body) + self.HEADER_LENGTH >= 0x10000: + raise too_large + header = b'INDX' + buf.seek(0), buf.truncate(0) + buf.write(pack(b'>I', self.HEADER_LENGTH)) + buf.write(b'\0'*4) # Unknown + buf.write(pack(b'>I', 1)) # Header type? Or index record number? + buf.write(b'\0'*4) # Unknown + + # IDXT block offset + buf.write(pack(b'>I', self.HEADER_LENGTH + len(index_block))) + + # Number of index entries + buf.write(pack(b'>I', len(rendered_entries))) + + buf.write(b'\xff'*8) # Unknown + + buf.write(b'\0'*156) # Unknown + + header += buf.getvalue() + index_record = header + body + + tagx = self.generate_tagx() + idxt = (b'IDXT' + pack(b'>H', IndexHeader.HEADER_LENGTH + len(tagx)) + + b'\0') + # Last index + idx = bytes(bytearray([len(last_lead_text)])) + last_lead_text + idx += pack(b'>H', len(rendered_entries)) + + header = { + 'num_of_entries': len(rendered_entries), + 'num_of_cncx': len(self.cncx), + 'tagx':tagx, + 'last_index':align_block(idx), + 'idxt':idxt + } + header = IndexHeader()(**header) + self.records = [header, index_record] + self.records.extend(self.cncx.records) + return self.records +# }}} + +class SkelIndex(Index): + + tag_types = tuple(map(TagMeta, ( + ('chunk_count', 1, 1, 3, 0), + ('geometry', 6, 2, 12, 0), + EndTagTable + ))) + + def __init__(self, skel_table): + self.entries = [ + (s.name, { + # Dont ask me why these entries have to be repeated twice + 'chunk_count':(s.chunk_count, s.chunk_count), + 'geometry':(s.start_pos, s.length, s.start_pos, s.length), + }) for s in skel_table + ] + + +class ChunkIndex(Index): + + tag_types = tuple(map(TagMeta, ( + ('cncx_offset', 2, 1, 1, 0), + ('file_number', 3, 1, 2, 0), + ('sequence_number', 4, 1, 4, 0), + ('geometry', 6, 2, 8, 0), + EndTagTable + ))) + + def __init__(self, chunk_table): + self.cncx = CNCX(c.selector for c in chunk_table) + + self.entries = [ + ('%010d'%c.insert_pos, { + + 'cncx_offset':self.cncx[c.selector], + 'file_number':c.file_number, + 'sequence_number':c.sequence_number, + 'geometry':(c.start_pos, c.length), + }) for c in chunk_table + ] + +class GuideIndex(Index): + + tag_types = tuple(map(TagMeta, ( + ('title', 1, 1, 1, 0), + ('pos_fid', 6, 2, 2, 0), + EndTagTable + ))) + + def __init__(self, guide_table): + self.cncx = CNCX(c.title for c in guide_table) + + self.entries = [ + (r.type, { + + 'title':self.cncx[r.title], + 'pos_fid':r.pos_fid, + }) for r in guide_table + ] + + +class NCXIndex(Index): + + ''' The commented out parts have been seen in NCX indexes from MOBI 6 + periodicals. Since we have no MOBI 8 periodicals to reverse engineer, leave + it for now. ''' + # control_byte_count = 2 + tag_types = tuple(map(TagMeta, ( + ('offset', 1, 1, 1, 0), + ('length', 2, 1, 2, 0), + ('label', 3, 1, 4, 0), + ('depth', 4, 1, 8, 0), + ('parent', 21, 1, 16, 0), + ('first_child', 22, 1, 32, 0), + ('last_child', 23, 1, 64, 0), + ('pos_fid', 6, 2, 128, 0), + EndTagTable, + # ('image', 69, 1, 1, 0), + # ('description', 70, 1, 2, 0), + # ('author', 71, 1, 4, 0), + # ('caption', 72, 1, 8, 0), + # ('attribution', 73, 1, 16, 0), + # EndTagTable + ))) + + def __init__(self, toc_table): + strings = [] + for entry in toc_table: + strings.append(entry['label']) + aut = entry.get('author', None) + if aut: + strings.append(aut) + desc = entry.get('description', None) + if desc: + strings.append(desc) + self.cncx = CNCX(strings) + + def to_entry(x): + ans = {} + for f in ('offset', 'length', 'depth', 'pos_fid', 'parent', + 'first_child', 'last_child'): + if f in x: + ans[f] = x[f] + for f in ('label', 'description', 'author'): + if f in x: + ans[f] = self.cncx[x[f]] + return ('%02x'%x['index'], ans) + + self.entries = list(map(to_entry, toc_table)) + + + diff --git a/src/calibre/ebooks/mobi/writer8/main.py b/src/calibre/ebooks/mobi/writer8/main.py new file mode 100644 index 0000000000..4e6719bb90 --- /dev/null +++ b/src/calibre/ebooks/mobi/writer8/main.py @@ -0,0 +1,408 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import copy, logging +from functools import partial +from collections import defaultdict, namedtuple +from io import BytesIO +from struct import pack + +import cssutils +from lxml import etree + +from calibre import isbytestring, force_unicode +from calibre.ebooks.mobi.utils import (create_text_record, to_base, + is_guide_ref_start) +from calibre.ebooks.compression.palmdoc import compress_doc +from calibre.ebooks.oeb.base import (OEB_DOCS, OEB_STYLES, SVG_MIME, XPath, + extract, XHTML, urlnormalize) +from calibre.ebooks.oeb.parse_utils import barename +from calibre.ebooks.mobi.writer8.skeleton import Chunker, aid_able_tags, to_href +from calibre.ebooks.mobi.writer8.index import (NCXIndex, SkelIndex, + ChunkIndex, GuideIndex) +from calibre.ebooks.mobi.writer8.mobi import KF8Book +from calibre.ebooks.mobi.writer8.tbs import apply_trailing_byte_sequences +from calibre.ebooks.mobi.writer8.toc import TOCAdder + +XML_DOCS = OEB_DOCS | {SVG_MIME} + +# References to record numbers in KF8 are stored as base-32 encoded integers, +# with 4 digits +to_ref = partial(to_base, base=32, min_num_digits=4) + +class KF8Writer(object): + + def __init__(self, oeb, opts, resources): + self.oeb, self.opts, self.log = oeb, opts, oeb.log + self.compress = not self.opts.dont_compress + self.has_tbs = False + self.log.info('Creating KF8 output') + + # Create an inline ToC if one does not already exist + self.toc_adder = TOCAdder(oeb, opts) + self.used_images = set() + self.resources = resources + self.flows = [None] # First flow item is reserved for the text + self.records = [None] # Placeholder for zeroth record + + self.log('\tGenerating KF8 markup...') + self.dup_data() + self.replace_resource_links() + self.extract_css_into_flows() + self.extract_svg_into_flows() + self.replace_internal_links_with_placeholders() + self.insert_aid_attributes() + self.chunk_it_up() + # Dump the cloned data as it is no longer needed + del self._data_cache + self.create_text_records() + self.log('\tCreating indices...') + self.create_fdst_records() + self.create_indices() + self.create_guide() + # We do not want to use this ToC for MOBI 6, so remove it + self.toc_adder.remove_generated_toc() + + def dup_data(self): + ''' Duplicate data so that any changes we make to markup/CSS only + affect KF8 output and not MOBI 6 output ''' + self._data_cache = {} + # Suppress cssutils logging output as it is duplicated anyway earlier + # in the pipeline + cssutils.log.setLevel(logging.CRITICAL) + for item in self.oeb.manifest: + if item.media_type in XML_DOCS: + self._data_cache[item.href] = copy.deepcopy(item.data) + elif item.media_type in OEB_STYLES: + # I can't figure out how to make an efficient copy of the + # in-memory CSSStylesheet, as deepcopy doesn't work (raises an + # exception) + self._data_cache[item.href] = cssutils.parseString( + item.data.cssText, validate=False) + + def data(self, item): + return self._data_cache.get(item.href, item.data) + + def replace_resource_links(self): + ''' Replace links to resources (raster images/fonts) with pointers to + the MOBI record containing the resource. The pointers are of the form: + kindle:embed:XXXX?mime=image/* The ?mime= is apparently optional and + not used for fonts. ''' + + def pointer(item, oref): + ref = item.abshref(oref) + idx = self.resources.item_map.get(ref, None) + if idx is not None: + is_image = self.resources.records[idx-1][:4] not in {b'FONT'} + idx = to_ref(idx) + if is_image: + self.used_images.add(ref) + return 'kindle:embed:%s?mime=%s'%(idx, + self.resources.mime_map[ref]) + else: + return 'kindle:embed:%s'%idx + return oref + + for item in self.oeb.manifest: + + if item.media_type in XML_DOCS: + root = self.data(item) + for tag in XPath('//h:img|//svg:image')(root): + for attr, ref in tag.attrib.iteritems(): + if attr.split('}')[-1].lower() in {'src', 'href'}: + tag.attrib[attr] = pointer(item, ref) + + for tag in XPath('//h:style')(root): + if tag.text: + sheet = cssutils.parseString(tag.text, validate=False) + replacer = partial(pointer, item) + cssutils.replaceUrls(sheet, replacer, + ignoreImportRules=True) + repl = sheet.cssText + if isbytestring(repl): + repl = repl.decode('utf-8') + tag.text = '\n'+ repl + '\n' + + elif item.media_type in OEB_STYLES: + sheet = self.data(item) + replacer = partial(pointer, item) + cssutils.replaceUrls(sheet, replacer, ignoreImportRules=True) + + def extract_css_into_flows(self): + inlines = defaultdict(list) # Ensure identical + + +

{title}

+
    +
+ + +''' + +class TOCAdder(object): + + def __init__(self, oeb, opts): + self.oeb, self.opts, self.log = oeb, opts, oeb.log + self.title = opts.toc_title or DEFAULT_TITLE + self.at_start = opts.mobi_toc_at_start + self.generated_item = None + self.added_toc_guide_entry = False + self.has_toc = oeb.toc and oeb.toc.count() > 1 + + if 'toc' in oeb.guide: + # Remove spurious toc entry from guide if it is not in spine or it + # does not have any hyperlinks + href = urlnormalize(oeb.guide['toc'].href) + if href in oeb.manifest.hrefs: + item = oeb.manifest.hrefs[href] + if (hasattr(item.data, 'xpath') and + XPath('//h:a[@href]')(item.data)): + if oeb.spine.index(item) < 0: + oeb.spine.add(item, linear=False) + return + elif self.has_toc: + oeb.guide.remove('toc') + else: + oeb.guide.remove('toc') + + if not self.has_toc or 'toc' in oeb.guide or opts.no_inline_toc: + return + + self.log('\tGenerating in-line ToC') + + root = etree.fromstring(TEMPLATE.format(xhtmlns=XHTML_NS, + title=self.title)) + parent = XPath('//h:ul')(root)[0] + parent.text = '\n\t' + for child in self.oeb.toc: + self.process_toc_node(child, parent) + + id, href = oeb.manifest.generate('contents', 'contents.xhtml') + item = self.generated_item = oeb.manifest.add(id, href, XHTML_MIME, + data=root) + if opts.mobi_toc_at_start == 'end': + oeb.spine.insert(0, item, linear=True) + else: + oeb.spine.add(item, linear=False) + + oeb.guide.add('toc', 'Table of Contents', href) + + def process_toc_node(self, toc, parent, level=0): + li = parent.makeelement(XHTML('li')) + li.tail = '\n'+ ('\t'*level) + parent.append(li) + a = parent.makeelement(XHTML('a'), href=toc.href or '#') + a.text = toc.title + li.append(a) + if toc.count() > 0: + parent = li.makeelement(XHTML('ul')) + li.append(parent) + a.tail = '\n' + ('\t'*level) + parent.text = '\n'+('\t'*(level+1)) + parent.tail = '\n' + ('\t'*level) + for child in toc: + self.process_toc_node(child, parent, level+1) + + def remove_generated_toc(self): + if self.generated_item is not None: + self.oeb.manifest.remove(self.generated_item) + self.generated_item = None + if self.added_toc_guide_entry: + self.oeb.guide.remove('toc') + self.added_toc_guide_entry = False + diff --git a/src/calibre/ebooks/odt/input.py b/src/calibre/ebooks/odt/input.py index 430d95b31f..14e1ff5892 100644 --- a/src/calibre/ebooks/odt/input.py +++ b/src/calibre/ebooks/odt/input.py @@ -116,7 +116,7 @@ class Extract(ODF2XHTML): def do_filter_css(self, css): from cssutils import parseString from cssutils.css import CSSRule - sheet = parseString(css) + sheet = parseString(css, validate=False) rules = list(sheet.cssRules.rulesOfType(CSSRule.STYLE_RULE)) sel_map = {} count = 0 diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py index bf9287d53a..a18e528a51 100644 --- a/src/calibre/ebooks/oeb/base.py +++ b/src/calibre/ebooks/oeb/base.py @@ -77,7 +77,7 @@ def XLINK(name): def CALIBRE(name): return '{%s}%s' % (CALIBRE_NS, name) -_css_url_re = re.compile(r'url\s*\((.*?)\)', re.I) +_css_url_re = re.compile(r'url\s*\([\'"]{0,1}(.*?)[\'"]{0,1}\)', re.I) _css_import_re = re.compile(r'@import "(.*?)"') _archive_re = re.compile(r'[^ ]+') @@ -197,13 +197,7 @@ def rewrite_links(root, link_repl_func, resolve_base_href=False): new = cur[:pos] + new_link + cur[pos+len(link):] el.attrib[attrib] = new - def set_property(v): - if v.CSS_PRIMITIVE_VALUE == v.cssValueType and \ - v.CSS_URI == v.primitiveType: - v.setStringValue(v.CSS_URI, - link_repl_func(v.getStringValue())) - - for el in root.iter(): + for el in root.iter(etree.Element): try: tag = el.tag except UnicodeDecodeError: @@ -212,7 +206,7 @@ def rewrite_links(root, link_repl_func, resolve_base_href=False): if tag == XHTML('style') and el.text and \ (_css_url_re.search(el.text) is not None or '@import' in el.text): - stylesheet = parseString(el.text) + stylesheet = parseString(el.text, validate=False) replaceUrls(stylesheet, link_repl_func) repl = stylesheet.cssText if isbytestring(repl): @@ -223,17 +217,11 @@ def rewrite_links(root, link_repl_func, resolve_base_href=False): text = el.attrib['style'] if _css_url_re.search(text) is not None: try: - stext = parseStyle(text) + stext = parseStyle(text, validate=False) except: # Parsing errors are raised by cssutils continue - for p in stext.getProperties(all=True): - v = p.cssValue - if v.CSS_VALUE_LIST == v.cssValueType: - for item in v: - set_property(item) - elif v.CSS_PRIMITIVE_VALUE == v.cssValueType: - set_property(v) + replaceUrls(stext, link_repl_func) repl = stext.cssText.replace('\n', ' ').replace('\r', ' ') if isbytestring(repl): @@ -357,7 +345,21 @@ def urlnormalize(href): parts = (urlquote(part) for part in parts) return urlunparse(parts) - +def extract(elem): + """ + Removes this element from the tree, including its children and + text. The tail text is joined to the previous element or + parent. + """ + parent = elem.getparent() + if parent is not None: + if elem.tail: + previous = elem.getprevious() + if previous is None: + parent.text = (parent.text or '') + elem.tail + else: + previous.tail = (previous.tail or '') + elem.tail + parent.remove(elem) class DummyHandler(logging.Handler): @@ -454,7 +456,14 @@ class DirContainer(object): path = os.path.join(self.rootdir, self._unquote(path)) except ValueError: #Happens if path contains quoted special chars return False - return os.path.isfile(path) + try: + return os.path.isfile(path) + except UnicodeEncodeError: + # On linux, if LANG is unset, the os.stat call tries to encode the + # unicode path using ASCII + # To replicate try: + # LANG=en_US.ASCII python -c "import os; os.stat(u'Espa\xf1a')" + return os.path.isfile(path.encode(filesystem_encoding)) def namelist(self): names = [] @@ -840,7 +849,7 @@ class Manifest(object): parser = CSSParser(loglevel=logging.WARNING, fetcher=self.override_css_fetch or self._fetch_css, log=_css_logger) - data = parser.parseString(data, href=self.href) + data = parser.parseString(data, href=self.href, validate=False) data = resolveImports(data) data.namespaces['h'] = XHTML_NS return data @@ -1133,6 +1142,19 @@ class Manifest(object): element(elem, OPF('item'), attrib=attrib) return elem + @dynamic_property + def main_stylesheet(self): + def fget(self): + ans = getattr(self, '_main_stylesheet', None) + if ans is None: + for item in self: + if item.media_type.lower() in OEB_STYLES: + ans = item + break + return ans + def fset(self, item): + self._main_stylesheet = item + return property(fget=fget, fset=fset) class Spine(object): """Collection of manifest items composing an OEB data model book's main diff --git a/src/calibre/ebooks/oeb/iterator.py b/src/calibre/ebooks/oeb/iterator.py index 3f2f7584c0..63965e59ef 100644 --- a/src/calibre/ebooks/oeb/iterator.py +++ b/src/calibre/ebooks/oeb/iterator.py @@ -217,6 +217,10 @@ class EbookIterator(object): if hasattr(self.pathtoopf, 'manifest'): self.pathtoopf = write_oebbook(self.pathtoopf, self.base) + self.book_format = os.path.splitext(self.pathtoebook)[1][1:].upper() + if getattr(plumber.input_plugin, 'is_kf8', False): + self.book_format = 'KF8' + self.opf = getattr(plumber.input_plugin, 'optimize_opf_parsing', None) if self.opf is None: self.opf = OPF(self.pathtoopf, os.path.dirname(self.pathtoopf)) @@ -363,3 +367,17 @@ class EbookIterator(object): for x in self.delete_on_exit: if os.path.exists(x): os.remove(x) + +def get_preprocess_html(path_to_ebook, output): + from calibre.ebooks.conversion.preprocess import HTMLPreProcessor + iterator = EbookIterator(path_to_ebook) + iterator.__enter__(only_input_plugin=True) + preprocessor = HTMLPreProcessor(None, False) + with open(output, 'wb') as out: + for path in iterator.spine: + with open(path, 'rb') as f: + html = f.read().decode('utf-8', 'replace') + html = preprocessor(html, get_preprocess_html=True) + out.write(html.encode('utf-8')) + out.write(b'\n\n' + b'-'*80 + b'\n\n') + diff --git a/src/calibre/ebooks/oeb/reader.py b/src/calibre/ebooks/oeb/reader.py index e83d60a28c..c9a8429f3b 100644 --- a/src/calibre/ebooks/oeb/reader.py +++ b/src/calibre/ebooks/oeb/reader.py @@ -256,7 +256,7 @@ class OEBReader(object): media_type = elem.get('media-type', None) if media_type is None: media_type = elem.get('mediatype', None) - if media_type is None or media_type == 'text/xml': + if not media_type or media_type == 'text/xml': guessed = guess_type(href)[0] media_type = guessed or media_type or BINARY_MIME if hasattr(media_type, 'lower'): diff --git a/src/calibre/ebooks/oeb/stylizer.py b/src/calibre/ebooks/oeb/stylizer.py index 20be750925..a85df4d744 100644 --- a/src/calibre/ebooks/oeb/stylizer.py +++ b/src/calibre/ebooks/oeb/stylizer.py @@ -11,16 +11,14 @@ __copyright__ = '2008, Marshall T. Vandegrift ' import os, itertools, re, logging, copy, unicodedata from weakref import WeakKeyDictionary from xml.dom import SyntaxErr as CSSSyntaxError -from cssutils.css import (CSSStyleRule, CSSPageRule, CSSStyleDeclaration, - CSSFontFaceRule, cssproperties) +from cssutils.css import (CSSStyleRule, CSSPageRule, CSSFontFaceRule, + cssproperties) try: - from cssutils.css import CSSValueList - CSSValueList + from cssutils.css import PropertyValue except ImportError: - # cssutils >= 0.9.8 - from cssutils.css import PropertyValue as CSSValueList + raise RuntimeError('You need cssutils >= 0.9.9 for calibre') from cssutils import (profile as cssprofiles, parseString, parseStyle, log as - cssutils_log, CSSParser, profiles) + cssutils_log, CSSParser, profiles, replaceUrls) from lxml import etree from lxml.cssselect import css_to_xpath, ExpressionError, SelectorSyntaxError from calibre import force_unicode @@ -37,7 +35,7 @@ def html_css_stylesheet(): global _html_css_stylesheet if _html_css_stylesheet is None: html_css = open(P('templates/html.css'), 'rb').read() - _html_css_stylesheet = parseString(html_css) + _html_css_stylesheet = parseString(html_css, validate=False) _html_css_stylesheet.namespaces['h'] = XHTML_NS return _html_css_stylesheet @@ -218,9 +216,14 @@ class Stylizer(object): if text: text = XHTML_CSS_NAMESPACE + text text = oeb.css_preprocessor(text) - stylesheet = parser.parseString(text, href=cssname) + stylesheet = parser.parseString(text, href=cssname, + validate=False) stylesheet.namespaces['h'] = XHTML_NS stylesheets.append(stylesheet) + # Make links to resources absolute, since these rules will + # be folded into a stylesheet at the root + replaceUrls(stylesheet, item.abshref, + ignoreImportRules=True) elif elem.tag == XHTML('link') and elem.get('href') \ and elem.get('rel', 'stylesheet').lower() == 'stylesheet' \ and elem.get('type', CSS_MIME).lower() in OEB_STYLES: @@ -243,7 +246,8 @@ class Stylizer(object): if x: try: text = XHTML_CSS_NAMESPACE + x - stylesheet = parser.parseString(text, href=cssname) + stylesheet = parser.parseString(text, href=cssname, + validate=False) stylesheet.namespaces['h'] = XHTML_NS stylesheets.append(stylesheet) except: @@ -295,7 +299,7 @@ class Stylizer(object): for elem in matches: self.style(elem)._update_cssdict(cssdict) for elem in xpath(tree, '//h:*[@style]'): - self.style(elem)._apply_style_attr() + self.style(elem)._apply_style_attr(url_replacer=item.abshref) num_pat = re.compile(r'\d+$') for elem in xpath(tree, '//h:img[@width or @height]'): style = self.style(elem) @@ -370,7 +374,7 @@ class Stylizer(object): def _normalize_edge(self, cssvalue, name): style = {} - if isinstance(cssvalue, CSSValueList): + if isinstance(cssvalue, PropertyValue): primitives = [v.cssText for v in cssvalue] else: primitives = [cssvalue.cssText] @@ -490,10 +494,13 @@ class Style(object): def set(self, prop, val): self._style[prop] = val + def drop(self, prop): + self._style.pop(prop, None) + def _update_cssdict(self, cssdict): self._style.update(cssdict) - def _apply_style_attr(self): + def _apply_style_attr(self, url_replacer=None): attrib = self._element.attrib if 'style' not in attrib: return @@ -501,10 +508,13 @@ class Style(object): css = filter(None, (x.strip() for x in css)) css = [x.strip() for x in css] css = [x for x in css if self.MS_PAT.match(x) is None] + css = '; '.join(css) try: - style = CSSStyleDeclaration('; '.join(css)) + style = parseStyle(css, validate=False) except CSSSyntaxError: return + if url_replacer is not None: + replaceUrls(style, url_replacer, ignoreImportRules=True) self._style.update(self._stylizer.flatten_style(style)) def _has_parent(self): @@ -568,7 +578,7 @@ class Style(object): val = self._style.get('background', None) if val is not None: try: - style = parseStyle('background: '+val) + style = parseStyle('background: '+val, validate=False) val = style.getProperty('background').cssValue try: val = list(val) @@ -731,7 +741,7 @@ class Style(object): parent = self._get_parent() if parent is not None: pcss = parent._style.get('text-decoration', None) - if css in ('none', None) and pcss not in (None, 'none'): + if css in ('none', None, 'inherit') and pcss not in (None, 'none'): return pcss return css diff --git a/src/calibre/ebooks/oeb/transforms/cover.py b/src/calibre/ebooks/oeb/transforms/cover.py index 4a4f512293..8facbab785 100644 --- a/src/calibre/ebooks/oeb/transforms/cover.py +++ b/src/calibre/ebooks/oeb/transforms/cover.py @@ -167,5 +167,9 @@ class CoverManager(object): self.oeb.guide.refs['cover'].href = item.href if 'titlepage' in self.oeb.guide.refs: self.oeb.guide.refs['titlepage'].href = item.href + titem = getattr(self.oeb.toc, 'item_that_refers_to_cover', None) + if titem is not None: + titem.href = item.href + diff --git a/src/calibre/ebooks/oeb/transforms/flatcss.py b/src/calibre/ebooks/oeb/transforms/flatcss.py index 62949b5fef..890c7db9ad 100644 --- a/src/calibre/ebooks/oeb/transforms/flatcss.py +++ b/src/calibre/ebooks/oeb/transforms/flatcss.py @@ -6,11 +6,12 @@ from __future__ import with_statement __license__ = 'GPL v3' __copyright__ = '2008, Marshall T. Vandegrift ' -import re -import operator -import math +import re, operator, math from collections import defaultdict + from lxml import etree +import cssutils + from calibre.ebooks.oeb.base import (XHTML, XHTML_NS, CSS_MIME, OEB_STYLES, namespace, barename, XPath) from calibre.ebooks.oeb.stylizer import Stylizer @@ -101,12 +102,13 @@ def FontMapper(sbase=None, dbase=None, dkey=None): class CSSFlattener(object): def __init__(self, fbase=None, fkey=None, lineh=None, unfloat=False, - untable=False, page_break_on_body=False): + untable=False, page_break_on_body=False, specializer=None): self.fbase = fbase self.fkey = fkey self.lineh = lineh self.unfloat = unfloat self.untable = untable + self.specializer = specializer self.page_break_on_body = page_break_on_body @classmethod @@ -133,6 +135,13 @@ class CSSFlattener(object): self.oeb.log.debug('Filtering CSS properties: %s'% ', '.join(self.filter_css)) + for item in oeb.manifest.values(): + # Make all links to resources absolute, as these sheets will be + # consolidated into a single stylesheet at the root of the document + if item.media_type in OEB_STYLES: + cssutils.replaceUrls(item.data, item.abshref, + ignoreImportRules=True) + self.stylize_spine() self.sbase = self.baseline_spine() if self.fbase else None self.fmap = FontMapper(self.sbase, self.fbase, self.fkey) @@ -369,7 +378,7 @@ class CSSFlattener(object): for child in node: self.flatten_node(child, stylizer, names, styles, psize, item_id, left) - def flatten_head(self, item, stylizer, href): + def flatten_head(self, item, href, global_href): html = item.data head = html.find(XHTML('head')) for node in head: @@ -381,37 +390,64 @@ class CSSFlattener(object): and node.get('type', CSS_MIME) in OEB_STYLES: head.remove(node) href = item.relhref(href) - etree.SubElement(head, XHTML('link'), + l = etree.SubElement(head, XHTML('link'), rel='stylesheet', type=CSS_MIME, href=href) - stylizer.page_rule['margin-top'] = '%fpt'%\ - float(self.context.margin_top) - stylizer.page_rule['margin-bottom'] = '%fpt'%\ - float(self.context.margin_bottom) - - items = stylizer.page_rule.items() - items.sort() - css = '; '.join("%s: %s" % (key, val) for key, val in items) - style = etree.SubElement(head, XHTML('style'), type=CSS_MIME) - style.text = "\n\t\t@page { %s; }" % css - rules = [r.cssText for r in stylizer.font_face_rules] - for r in rules: - style.text += '\n\t\t'+r+'\n' + l.tail='\n' + href = item.relhref(global_href) + l = etree.SubElement(head, XHTML('link'), + rel='stylesheet', type=CSS_MIME, href=href) + l.tail = '\n' def replace_css(self, css): manifest = self.oeb.manifest - id, href = manifest.generate('css', 'stylesheet.css') for item in manifest.values(): if item.media_type in OEB_STYLES: manifest.remove(item) - item = manifest.add(id, href, CSS_MIME, data=css) + id, href = manifest.generate('css', 'stylesheet.css') + item = manifest.add(id, href, CSS_MIME, data=cssutils.parseString(css, + validate=False)) + self.oeb.manifest.main_stylesheet = item return href + def collect_global_css(self): + global_css = defaultdict(list) + for item in self.oeb.spine: + stylizer = self.stylizers[item] + stylizer.page_rule['margin-top'] = '%gpt'%\ + float(self.context.margin_top) + stylizer.page_rule['margin-bottom'] = '%gpt'%\ + float(self.context.margin_bottom) + items = stylizer.page_rule.items() + items.sort() + css = ';\n'.join("%s: %s" % (key, val) for key, val in items) + css = '@page {\n%s\n}\n'%css + rules = [r.cssText for r in stylizer.font_face_rules] + raw = '\n\n'.join(rules) + css += '\n\n' + raw + global_css[css].append(item) + + gc_map = {} + manifest = self.oeb.manifest + for css in global_css: + id_, href = manifest.generate('page_css', 'page_styles.css') + manifest.add(id_, href, CSS_MIME, data=cssutils.parseString(css, + validate=False)) + gc_map[css] = href + + ans = {} + for css, items in global_css.iteritems(): + for item in items: + ans[item] = gc_map[css] + return ans + def flatten_spine(self): names = defaultdict(int) styles = {} for item in self.oeb.spine: html = item.data stylizer = self.stylizers[item] + if self.specializer is not None: + self.specializer(item, stylizer) body = html.find(XHTML('body')) fsize = self.context.dest.fbase self.flatten_node(body, stylizer, names, styles, fsize, item.id) @@ -419,7 +455,8 @@ class CSSFlattener(object): items.sort() css = ''.join(".%s {\n%s;\n}\n\n" % (key, val) for key, val in items) href = self.replace_css(css) + global_css = self.collect_global_css() for item in self.oeb.spine: stylizer = self.stylizers[item] - self.flatten_head(item, stylizer, href) + self.flatten_head(item, href, global_css[item]) diff --git a/src/calibre/ebooks/oeb/transforms/page_margin.py b/src/calibre/ebooks/oeb/transforms/page_margin.py index d7c99d24c6..9181c8fd4e 100644 --- a/src/calibre/ebooks/oeb/transforms/page_margin.py +++ b/src/calibre/ebooks/oeb/transforms/page_margin.py @@ -9,7 +9,7 @@ __docformat__ = 'restructuredtext en' from collections import Counter -from calibre.ebooks.oeb.base import OEB_STYLES, barename, XPath +from calibre.ebooks.oeb.base import barename, XPath class RemoveAdobeMargins(object): ''' @@ -51,10 +51,7 @@ class RemoveFakeMargins(object): self.stats = {} self.selector_map = {} - for item in self.oeb.manifest: - if item.media_type.lower() in OEB_STYLES: - stylesheet = item - break + stylesheet = self.oeb.manifest.main_stylesheet if stylesheet is None: return diff --git a/src/calibre/ebooks/oeb/transforms/split.py b/src/calibre/ebooks/oeb/transforms/split.py index 37a1eb2cbf..d7f5556701 100644 --- a/src/calibre/ebooks/oeb/transforms/split.py +++ b/src/calibre/ebooks/oeb/transforms/split.py @@ -50,6 +50,7 @@ class Split(object): def __call__(self, oeb, opts): self.oeb = oeb self.log = oeb.log + self.log('Splitting markup on page breaks and flow limits, if any...') self.opts = opts self.map = {} for item in list(self.oeb.manifest.items): diff --git a/src/calibre/ebooks/pdb/__init__.py b/src/calibre/ebooks/pdb/__init__.py index 428cbe82ab..020f64f613 100644 --- a/src/calibre/ebooks/pdb/__init__.py +++ b/src/calibre/ebooks/pdb/__init__.py @@ -16,6 +16,7 @@ def _import_readers(): from calibre.ebooks.pdb.ztxt.reader import Reader as ztxt_reader from calibre.ebooks.pdb.pdf.reader import Reader as pdf_reader from calibre.ebooks.pdb.plucker.reader import Reader as plucker_reader + from calibre.ebooks.pdb.haodoo.reader import Reader as haodoo_reader FORMAT_READERS = { 'PNPdPPrs': ereader_reader, @@ -24,6 +25,8 @@ def _import_readers(): 'TEXtREAd': palmdoc_reader, '.pdfADBE': pdf_reader, 'DataPlkr': plucker_reader, + 'BOOKMTIT': haodoo_reader, + 'BOOKMTIU': haodoo_reader, } ALL_FORMAT_WRITERS = {'doc', 'ztxt', 'ereader'} @@ -47,6 +50,8 @@ IDENTITY_TO_NAME = { 'TEXtREAd': 'PalmDOC', '.pdfADBE': 'Adobe Reader', 'DataPlkr': 'Plucker', + 'BOOKMTIT': 'Haodoo.net', + 'BOOKMTIU': 'Haodoo.net', 'BVokBDIC': 'BDicty', 'DB99DBOS': 'DB (Database program)', diff --git a/src/calibre/ebooks/pdb/haodoo/__init__.py b/src/calibre/ebooks/pdb/haodoo/__init__.py new file mode 100644 index 0000000000..dd9615356c --- /dev/null +++ b/src/calibre/ebooks/pdb/haodoo/__init__.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + + + diff --git a/src/calibre/ebooks/pdb/haodoo/reader.py b/src/calibre/ebooks/pdb/haodoo/reader.py new file mode 100644 index 0000000000..f97ee0d90f --- /dev/null +++ b/src/calibre/ebooks/pdb/haodoo/reader.py @@ -0,0 +1,151 @@ +# -*- coding: utf-8 -*- + +''' +Read content from Haodoo.net pdb file. +''' + +__license__ = 'GPL v3' +__copyright__ = '2012, Kan-Ru Chen ' +__docformat__ = 'restructuredtext en' + + +import struct +import os + +from calibre import prepare_string_for_xml +from calibre.ebooks.pdb.formatreader import FormatReader +from calibre.ebooks.metadata import MetaInformation +from calibre.ebooks.txt.processor import opf_writer, HTML_TEMPLATE + +BPDB_IDENT = b'BOOKMTIT' +UPDB_IDENT = b'BOOKMTIU' + +punct_table = { + u"︵": u"(", + u"︶": u")", + u"︷": u"{", + u"︸": u"}", + u"︹": u"〔", + u"︺": u"〕", + u"︻": u"【", + u"︼": u"】", + u"︗": u"〖", + u"︘": u"〗", + u"﹇": u"[]", + u"﹈": u"[]", + u"︽": u"《", + u"︾": u"》", + u"︿": u"〈", + u"﹀": u"〉", + u"﹁": u"「", + u"﹂": u"」", + u"﹃": u"『", + u"﹄": u"』", + u"|": u"—", + u"︙": u"…", + u"ⸯ": u"~", + u"│": u"…", + u"¦": u"…", + u" ": u" ", + } + +def fix_punct(line): + for (key, value) in punct_table.items(): + line = line.replace(key, value) + return line + +class LegacyHeaderRecord(object): + + def __init__(self, raw): + fields = raw.lstrip().replace(b'\x1b\x1b\x1b', b'\x1b').split(b'\x1b') + self.title = fix_punct(fields[0].decode('cp950', 'replace')) + self.num_records = int(fields[1]) + self.chapter_titles = map( + lambda x: fix_punct(x.decode('cp950', 'replace').rstrip(b'\x00')), + fields[2:]) + +class UnicodeHeaderRecord(object): + + def __init__(self, raw): + fields = raw.lstrip().replace(b'\x1b\x00\x1b\x00\x1b\x00', + b'\x1b\x00').split(b'\x1b\x00') + self.title = fix_punct(fields[0].decode('utf_16_le', 'ignore')) + self.num_records = int(fields[1]) + self.chapter_titles = map( + lambda x: fix_punct(x.decode('utf_16_le', 'replace').rstrip(b'\x00')), + fields[2].split(b'\r\x00\n\x00')) + +class Reader(FormatReader): + + def __init__(self, header, stream, log, options): + self.stream = stream + self.log = log + + self.sections = [] + for i in range(header.num_sections): + self.sections.append(header.section_data(i)) + + if header.ident == BPDB_IDENT: + self.header_record = LegacyHeaderRecord(self.section_data(0)) + self.encoding = 'cp950' + else: + self.header_record = UnicodeHeaderRecord(self.section_data(0)) + self.encoding = 'utf_16_le' + + def author(self): + self.stream.seek(35) + version = struct.unpack(b'>b', self.stream.read(1))[0] + if version == 2: + self.stream.seek(0) + author = self.stream.read(35).rstrip(b'\x00').decode(self.encoding, 'replace') + return author + else: + return u'Unknown' + + def get_metadata(self): + mi = MetaInformation(self.header_record.title, + [self.author()]) + mi.language = u'zh-tw' + + return mi + + def section_data(self, number): + return self.sections[number] + + def decompress_text(self, number): + return self.section_data(number).decode(self.encoding, + 'replace').rstrip(b'\x00') + + def extract_content(self, output_dir): + txt = u'' + + self.log.info(u'Decompressing text...') + for i in range(1, self.header_record.num_records + 1): + self.log.debug(u'\tDecompressing text section %i' % i) + title = self.header_record.chapter_titles[i-1] + lines = [] + title_added = False + for line in self.decompress_text(i).splitlines(): + line = fix_punct(line) + line = line.strip() + if not title_added and title in line: + line = u'

' + line + u'

\n' + title_added = True + else: + line = prepare_string_for_xml(line) + lines.append(u'

%s

' % line) + if not title_added: + lines.insert(0, u'

' + title + u'

\n') + txt += u'\n'.join(lines) + + self.log.info(u'Converting text to OEB...') + html = HTML_TEMPLATE % (self.header_record.title, txt) + with open(os.path.join(output_dir, u'index.html'), 'wb') as index: + index.write(html.encode('utf-8')) + + mi = self.get_metadata() + manifest = [(u'index.html', None)] + spine = [u'index.html'] + opf_writer(output_dir, u'metadata.opf', manifest, spine, mi) + + return os.path.join(output_dir, u'metadata.opf') diff --git a/src/calibre/ebooks/tweak.py b/src/calibre/ebooks/tweak.py new file mode 100644 index 0000000000..8ff2e5e950 --- /dev/null +++ b/src/calibre/ebooks/tweak.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import sys, os, shlex, subprocess, shutil + +from calibre import prints, as_unicode, walk +from calibre.constants import iswindows, __appname__ +from calibre.ptempfile import TemporaryDirectory, TemporaryFile +from calibre.libunzip import extract as zipextract +from calibre.utils.zipfile import ZipFile, ZIP_DEFLATED, ZIP_STORED +from calibre.utils.ipc.simple_worker import WorkerError + +class Error(ValueError): + pass + +def ask_cli_question(msg): + prints(msg, end=' [y/N]: ') + sys.stdout.flush() + + if iswindows: + import msvcrt + ans = msvcrt.getch() + else: + import tty, termios + old_settings = termios.tcgetattr(sys.stdin.fileno()) + try: + tty.setraw(sys.stdin.fileno()) + try: + ans = sys.stdin.read(1) + except KeyboardInterrupt: + ans = b'' + finally: + termios.tcsetattr(sys.stdin.fileno(), termios.TCSADRAIN, old_settings) + print() + return ans == b'y' + +def mobi_exploder(path, tdir, question=lambda x:True): + from calibre.ebooks.mobi.tweak import explode, BadFormat + try: + return explode(path, tdir, question=question) + except BadFormat as e: + raise Error(as_unicode(e)) + +def zip_exploder(path, tdir, question=lambda x:True): + zipextract(path, tdir) + for f in walk(tdir): + if f.lower().endswith('.opf'): + return f + raise Error('Invalid book: Could not find .opf') + +def zip_rebuilder(tdir, path): + with ZipFile(path, 'w', compression=ZIP_DEFLATED) as zf: + # Write mimetype + mt = os.path.join(tdir, 'mimetype') + if os.path.exists(mt): + zf.write(mt, 'mimetype', compress_type=ZIP_STORED) + # Write everything else + exclude_files = {'.DS_Store', 'mimetype', 'iTunesMetadata.plist'} + for root, dirs, files in os.walk(tdir): + for fn in files: + if fn in exclude_files: + continue + absfn = os.path.join(root, fn) + zfn = os.path.relpath(absfn, tdir).replace(os.sep, '/') + zf.write(absfn, zfn) + +def get_tools(fmt): + fmt = fmt.lower() + + if fmt in {'mobi', 'azw', 'azw3'}: + from calibre.ebooks.mobi.tweak import rebuild + ans = mobi_exploder, rebuild + elif fmt in {'epub', 'htmlz'}: + ans = zip_exploder, zip_rebuilder + else: + ans = None, None + + return ans + +def tweak(ebook_file): + ''' Command line interface to the Tweak Book tool ''' + fmt = ebook_file.rpartition('.')[-1].lower() + exploder, rebuilder = get_tools(fmt) + if exploder is None: + prints('Cannot tweak %s files. Supported formats are: EPUB, HTMLZ, AZW3, MOBI' + , file=sys.stderr) + raise SystemExit(1) + + with TemporaryDirectory('_tweak_'+ + os.path.basename(ebook_file).rpartition('.')[0]) as tdir: + try: + opf = exploder(ebook_file, tdir, question=ask_cli_question) + except WorkerError as e: + prints('Failed to unpack', ebook_file) + prints(e.orig_tb) + raise SystemExit(1) + except Error as e: + prints(as_unicode(e), file=sys.stderr) + raise SystemExit(1) + + if opf is None: + # The question was answered with No + return + + ed = os.environ.get('EDITOR', 'dummy') + cmd = shlex.split(ed) + isvim = bool([x for x in cmd[0].split('/') if x.endswith('vim')]) + + proceed = False + prints('Book extracted to', tdir) + + if not isvim: + prints('Make your tweaks and once you are done,', __appname__, + 'will rebuild', ebook_file, 'from', tdir) + print() + proceed = ask_cli_question('Rebuild ' + ebook_file + '?') + else: + base = os.path.basename(ebook_file) + with TemporaryFile(base+'.zip') as zipf: + with ZipFile(zipf, 'w') as zf: + zf.add_dir(tdir) + try: + subprocess.check_call(cmd + [zipf]) + except: + prints(ed, 'failed, aborting...') + raise SystemExit(1) + with ZipFile(zipf, 'r') as zf: + shutil.rmtree(tdir) + os.mkdir(tdir) + zf.extractall(path=tdir) + proceed = True + + if proceed: + prints('Rebuilding', ebook_file, 'please wait ...') + try: + rebuilder(tdir, ebook_file) + except WorkerError as e: + prints('Failed to rebuild', ebook_file) + prints(e.orig_tb) + raise SystemExit(1) + prints(ebook_file, 'successfully tweaked') + diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index d334816985..b27a97d899 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -641,6 +641,26 @@ def choose_files(window, name, title, return fd.get_files() return None +def choose_save_file(window, name, title, filters=[], all_files=True): + ''' + Ask user to choose a file to save to. Can be a non-existent file. + :param filters: list of allowable extensions. Each element of the list + must be a 2-tuple with first element a string describing + the type of files to be filtered and second element a list + of extensions. + :param all_files: If True add All files to filters. + ''' + mode = QFileDialog.AnyFile + fd = FileDialog(title=title, name=name, filters=filters, + parent=window, add_all_files_filter=all_files, mode=mode) + fd.setParent(None) + ans = None + if fd.accepted: + ans = fd.get_files() + if ans: + ans = ans[0] + return ans + def choose_images(window, name, title, select_only_single_file=True): mode = QFileDialog.ExistingFile if select_only_single_file else QFileDialog.ExistingFiles fd = FileDialog(title=title, name=name, diff --git a/src/calibre/gui2/actions/catalog.py b/src/calibre/gui2/actions/catalog.py index c424e2b38a..ba3756003c 100644 --- a/src/calibre/gui2/actions/catalog.py +++ b/src/calibre/gui2/actions/catalog.py @@ -68,8 +68,8 @@ class GenerateCatalogAction(InterfaceAction): # Subsequent strings are error messages dialog_title = job.result.pop(0) if re.match('warning:', job.result[0].lower()): - job.result.append("Catalog generation complete.") - warning_dialog(self.gui, dialog_title, '\n'.join(job.result), show=True) + msg = _("Catalog generation complete, with warnings.") + warning_dialog(self.gui, dialog_title, msg, det_msg='\n'.join(job.result), show=True) else: job.result.append("Catalog generation terminated.") error_dialog(self.gui, dialog_title,'\n'.join(job.result),show=True) diff --git a/src/calibre/gui2/actions/choose_library.py b/src/calibre/gui2/actions/choose_library.py index 4990178a4b..00b8b176c3 100644 --- a/src/calibre/gui2/actions/choose_library.py +++ b/src/calibre/gui2/actions/choose_library.py @@ -12,7 +12,7 @@ from PyQt4.Qt import (QMenu, Qt, QInputDialog, QToolButton, QDialog, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QIcon, QSize, QCoreApplication) -from calibre import isbytestring +from calibre import isbytestring, sanitize_file_name_unicode from calibre.constants import filesystem_encoding, iswindows from calibre.utils.config import prefs from calibre.gui2 import (gprefs, warning_dialog, Dispatcher, error_dialog, @@ -275,7 +275,7 @@ class ChooseLibraryAction(InterfaceAction): '

'+_('Choose a new name for the library %s. ')%name + '

'+_('Note that the actual library folder will be renamed.'), text=name) - newname = unicode(newname) + newname = sanitize_file_name_unicode(unicode(newname)) if not ok or not newname or newname == name: return newloc = os.path.join(base, newname) diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 527beae0ab..21cba758e8 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -5,7 +5,7 @@ __license__ = 'GPL v3' __copyright__ = '2010, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import os +import os, shutil from functools import partial from PyQt4.Qt import QMenu, QModelIndex, QTimer @@ -16,6 +16,7 @@ from calibre.gui2.dialogs.confirm_delete import confirm from calibre.gui2.dialogs.device_category_editor import DeviceCategoryEditor from calibre.gui2.actions import InterfaceAction from calibre.ebooks.metadata import authors_to_string +from calibre.ebooks.metadata.opf2 import OPF from calibre.utils.icu import sort_key from calibre.db.errors import NoSuchFormat @@ -79,17 +80,27 @@ class EditMetadataAction(InterfaceAction): Dispatcher(self.metadata_downloaded), ensure_fields=ensure_fields) + def cleanup_bulk_download(self, tdir): + try: + shutil.rmtree(tdir, ignore_errors=True) + except: + pass + def metadata_downloaded(self, job): if job.failed: self.gui.job_exception(job, dialog_title=_('Failed to download metadata')) return from calibre.gui2.metadata.bulk_download import get_job_details - id_map, failed_ids, failed_covers, all_failed, det_msg = \ - get_job_details(job) + (aborted, id_map, tdir, log_file, failed_ids, failed_covers, all_failed, + det_msg, lm_map) = get_job_details(job) + if aborted: + return self.cleanup_bulk_download(tdir) if all_failed: + num = len(failed_ids | failed_covers) + self.cleanup_bulk_download(tdir) return error_dialog(self.gui, _('Download failed'), _('Failed to download metadata or covers for any of the %d' - ' book(s).') % len(id_map), det_msg=det_msg, show=True) + ' book(s).') % num, det_msg=det_msg, show=True) self.gui.status_bar.show_message(_('Metadata download completed'), 3000) @@ -103,28 +114,25 @@ class EditMetadataAction(InterfaceAction): msg += '

'+_('Could not download metadata and/or covers for %d of the books. Click' ' "Show details" to see which books.')%num - payload = (id_map, failed_ids, failed_covers) - from calibre.gui2.dialogs.message_box import ProceedNotification - p = ProceedNotification(self.apply_downloaded_metadata, - payload, job.html_details, + payload = (id_map, tdir, log_file, lm_map) + self.gui.proceed_question(self.apply_downloaded_metadata, + payload, log_file, _('Download log'), _('Download complete'), msg, det_msg=det_msg, show_copy_button=show_copy_button, - parent=self.gui) - p.show() + cancel_callback=lambda x:self.cleanup_bulk_download(tdir), + log_is_file=True) def apply_downloaded_metadata(self, payload): - id_map, failed_ids, failed_covers = payload - id_map = dict([(k, v) for k, v in id_map.iteritems() if k not in - failed_ids]) - if not id_map: + good_ids, tdir, log_file, lm_map = payload + if not good_ids: return modified = set() db = self.gui.current_db - for i, mi in id_map.iteritems(): + for i in good_ids: lm = db.metadata_last_modified(i, index_is_id=True) - if lm > mi.last_modified: + if lm > lm_map[i]: title = db.title(i, index_is_id=True) authors = db.authors(i, index_is_id=True) if authors: @@ -144,7 +152,18 @@ class EditMetadataAction(InterfaceAction): 'Do you want to proceed?'), det_msg='\n'.join(modified)): return - self.apply_metadata_changes(id_map) + id_map = {} + for bid in good_ids: + opf = os.path.join(tdir, '%d.mi'%bid) + if not os.path.exists(opf): + opf = None + cov = os.path.join(tdir, '%d.cover'%bid) + if not os.path.exists(cov): + cov = None + id_map[bid] = (opf, cov) + + self.apply_metadata_changes(id_map, callback=lambda x: + self.cleanup_bulk_download(tdir)) # }}} @@ -468,13 +487,18 @@ class EditMetadataAction(InterfaceAction): callback can be either None or a function accepting a single argument, in which case it is called after applying is complete with the list of changed ids. + + id_map can also be a mapping of ids to 2-tuple's where each 2-tuple + contains the absolute paths to an OPF and cover file respectively. If + either of the paths is None, then the corresponding metadata is not + updated. ''' if title is None: title = _('Applying changed metadata') self.apply_id_map = list(id_map.iteritems()) self.apply_current_idx = 0 self.apply_failures = [] - self.applied_ids = [] + self.applied_ids = set() self.apply_pd = None self.apply_callback = callback if len(self.apply_id_map) > 1: @@ -492,28 +516,49 @@ class EditMetadataAction(InterfaceAction): return self.finalize_apply() i, mi = self.apply_id_map[self.apply_current_idx] + if isinstance(mi, tuple): + opf, cover = mi + if opf: + mi = OPF(open(opf, 'rb'), basedir=os.path.dirname(opf), + populate_spine=False).to_book_metadata() + self.apply_mi(i, mi) + if cover: + self.gui.current_db.set_cover(i, open(cover, 'rb'), + notify=False, commit=False) + self.applied_ids.add(i) + else: + self.apply_mi(i, mi) + + self.apply_current_idx += 1 + if self.apply_pd is not None: + self.apply_pd.value += 1 + QTimer.singleShot(50, self.do_one_apply) + + + def apply_mi(self, book_id, mi): db = self.gui.current_db + try: set_title = not mi.is_null('title') set_authors = not mi.is_null('authors') - idents = db.get_identifiers(i, index_is_id=True) + idents = db.get_identifiers(book_id, index_is_id=True) if mi.identifiers: idents.update(mi.identifiers) mi.identifiers = idents if mi.is_null('series'): mi.series_index = None if self._am_merge_tags: - old_tags = db.tags(i, index_is_id=True) + old_tags = db.tags(book_id, index_is_id=True) if old_tags: tags = [x.strip() for x in old_tags.split(',')] + ( mi.tags if mi.tags else []) mi.tags = list(set(tags)) - db.set_metadata(i, mi, commit=False, set_title=set_title, + db.set_metadata(book_id, mi, commit=False, set_title=set_title, set_authors=set_authors, notify=False) - self.applied_ids.append(i) + self.applied_ids.add(book_id) except: import traceback - self.apply_failures.append((i, traceback.format_exc())) + self.apply_failures.append((book_id, traceback.format_exc())) try: if mi.cover: @@ -521,11 +566,6 @@ class EditMetadataAction(InterfaceAction): except: pass - self.apply_current_idx += 1 - if self.apply_pd is not None: - self.apply_pd.value += 1 - QTimer.singleShot(50, self.do_one_apply) - def finalize_apply(self): db = self.gui.current_db db.commit() @@ -550,7 +590,7 @@ class EditMetadataAction(InterfaceAction): if self.applied_ids: cr = self.gui.library_view.currentIndex().row() self.gui.library_view.model().refresh_ids( - self.applied_ids, cr) + list(self.applied_ids), cr) if self.gui.cover_flow: self.gui.cover_flow.dataChanged() self.gui.tags_view.recount() @@ -559,7 +599,7 @@ class EditMetadataAction(InterfaceAction): self.apply_pd = None try: if callable(self.apply_callback): - self.apply_callback(self.applied_ids) + self.apply_callback(list(self.applied_ids)) finally: self.apply_callback = None diff --git a/src/calibre/gui2/actions/tweak_epub.py b/src/calibre/gui2/actions/tweak_epub.py index 02fc327f38..0d5f8ec8f5 100755 --- a/src/calibre/gui2/actions/tweak_epub.py +++ b/src/calibre/gui2/actions/tweak_epub.py @@ -5,70 +5,307 @@ __license__ = 'GPL v3' __copyright__ = '2010, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import os +import os, weakref, shutil -from calibre.gui2 import error_dialog +from PyQt4.Qt import (QDialog, QVBoxLayout, QHBoxLayout, QRadioButton, QFrame, + QPushButton, QLabel, QGroupBox, QGridLayout, QIcon, QSize, QTimer) + +from calibre import as_unicode +from calibre.constants import isosx +from calibre.gui2 import error_dialog, question_dialog, open_local_file from calibre.gui2.actions import InterfaceAction -from calibre.gui2.dialogs.tweak_epub import TweakEpub -from calibre.utils.config import tweaks +from calibre.ptempfile import (PersistentTemporaryDirectory, + PersistentTemporaryFile) +from calibre.utils.config import prefs + +class TweakBook(QDialog): + + def __init__(self, parent, book_id, fmts, db): + QDialog.__init__(self, parent) + self.book_id, self.fmts, self.db_ref = book_id, fmts, weakref.ref(db) + self._exploded = None + self._cleanup_dirs = [] + self._cleanup_files = [] + + self.setup_ui() + self.setWindowTitle(_('Tweak Book') + ' - ' + db.title(book_id, + index_is_id=True)) + + button = self.fmt_choice_buttons[0] + of = prefs['output_format'].upper() + for x in self.fmt_choice_buttons: + if unicode(x.text()) == of: + button = x + break + button.setChecked(True) + + self.init_state() + for button in self.fmt_choice_buttons: + button.toggled.connect(self.init_state) + + def init_state(self, *args): + self._exploded = None + self.preview_button.setEnabled(False) + self.rebuild_button.setEnabled(False) + self.explode_button.setEnabled(True) + + def setup_ui(self): # {{{ + self._g = g = QHBoxLayout(self) + self.setLayout(g) + self._l = l = QVBoxLayout() + g.addLayout(l) + + fmts = sorted(x.upper() for x in self.fmts) + self.fmt_choice_box = QGroupBox(_('Choose the format to tweak:'), self) + self._fl = fl = QHBoxLayout() + self.fmt_choice_box.setLayout(self._fl) + self.fmt_choice_buttons = [QRadioButton(x, self) for x in fmts] + for x in self.fmt_choice_buttons: + fl.addWidget(x, stretch=10 if x is self.fmt_choice_buttons[-1] else + 0) + l.addWidget(self.fmt_choice_box) + self.fmt_choice_box.setVisible(len(fmts) > 1) + + self.help_label = QLabel(_('''\ +

About Tweak Book

+

Tweak Book allows you to fine tune the appearance of an ebook by + making small changes to its internals. In order to use Tweak Book, + you need to know a little bit about HTML and CSS, technologies that + are used in ebooks. Follow the steps:

+
+
    +
  1. Click "Explode Book": This will "explode" the book into its + individual internal components.
  2. +
  3. Right click on any individual file and select "Open with..." to + edit it in your favorite text editor.
  4. +
  5. When you are done Tweaking: close the file browser window + and the editor windows you used to make your tweaks. Then click + the "Rebuild Book" button, to update the book in your calibre + library.
  6. +
''')) + self.help_label.setWordWrap(True) + self._fr = QFrame() + self._fr.setFrameShape(QFrame.VLine) + g.addWidget(self._fr) + g.addWidget(self.help_label) + + self._b = b = QGridLayout() + left, top, right, bottom = b.getContentsMargins() + top += top + b.setContentsMargins(left, top, right, bottom) + l.addLayout(b, stretch=10) + + self.explode_button = QPushButton(QIcon(I('wizard.png')), _('&Explode Book')) + self.preview_button = QPushButton(QIcon(I('view.png')), _('&Preview Book')) + self.cancel_button = QPushButton(QIcon(I('window-close.png')), _('&Cancel')) + self.rebuild_button = QPushButton(QIcon(I('exec.png')), _('&Rebuild Book')) + + self.explode_button.setToolTip( + _('Explode the book to edit its components')) + self.preview_button.setToolTip( + _('Preview the result of your tweaks')) + self.cancel_button.setToolTip( + _('Abort without saving any changes')) + self.rebuild_button.setToolTip( + _('Save your changes and update the book in the calibre library')) + + a = b.addWidget + a(self.explode_button, 0, 0, 1, 1) + a(self.preview_button, 0, 1, 1, 1) + a(self.cancel_button, 1, 0, 1, 1) + a(self.rebuild_button, 1, 1, 1, 1) + + for x in ('explode', 'preview', 'cancel', 'rebuild'): + getattr(self, x+'_button').clicked.connect(getattr(self, x)) + + self.msg = QLabel('dummy', self) + self.msg.setVisible(False) + self.msg.setStyleSheet(''' + QLabel { + text-align: center; + background-color: white; + color: black; + border-width: 1px; + border-style: solid; + border-radius: 20px; + font-size: x-large; + font-weight: bold; + } + ''') + + self.resize(self.sizeHint() + QSize(40, 10)) + # }}} + + def show_msg(self, msg): + self.msg.setText(msg) + self.msg.resize(self.size() - QSize(50, 25)) + self.msg.move((self.width() - self.msg.width())//2, + (self.height() - self.msg.height())//2) + self.msg.setVisible(True) + + def hide_msg(self): + self.msg.setVisible(False) + + def explode(self): + self.show_msg(_('Exploding, please wait...')) + QTimer.singleShot(5, self.do_explode) + + def ask_question(self, msg): + return question_dialog(self, _('Are you sure?'), msg) + + def do_explode(self): + from calibre.ebooks.tweak import get_tools, Error, WorkerError + tdir = PersistentTemporaryDirectory('_tweak_explode') + self._cleanup_dirs.append(tdir) + det_msg = None + try: + src = self.db.format(self.book_id, self.current_format, + index_is_id=True, as_path=True) + self._cleanup_files.append(src) + exploder = get_tools(self.current_format)[0] + opf = exploder(src, tdir, question=self.ask_question) + except WorkerError as e: + det_msg = e.orig_tb + except Error as e: + return error_dialog(self, _('Failed to unpack'), + (_('Could not explode the %s file.')%self.current_format) + ' ' + + as_unicode(e), show=True) + except: + import traceback + det_msg = traceback.format_exc() + finally: + self.hide_msg() + + if det_msg is not None: + return error_dialog(self, _('Failed to unpack'), + _('Could not explode the %s file. Click "Show Details" for ' + 'more information.')%self.current_format, det_msg=det_msg, + show=True) + + if opf is None: + # The question was answered with No + return + + self._exploded = tdir + self.explode_button.setEnabled(False) + self.preview_button.setEnabled(True) + self.rebuild_button.setEnabled(True) + open_local_file(tdir) + + def rebuild_it(self): + from calibre.ebooks.tweak import get_tools, WorkerError + src_dir = self._exploded + det_msg = None + of = PersistentTemporaryFile('_tweak_rebuild.'+self.current_format.lower()) + of.close() + of = of.name + self._cleanup_files.append(of) + try: + rebuilder = get_tools(self.current_format)[1] + rebuilder(src_dir, of) + except WorkerError as e: + det_msg = e.orig_tb + except: + import traceback + det_msg = traceback.format_exc() + finally: + self.hide_msg() + + if det_msg is not None: + error_dialog(self, _('Failed to rebuild file'), + _('Failed to rebuild %s. For more information, click ' + '"Show details".')%self.current_format, + det_msg=det_msg, show=True) + return None + + return of + + def preview(self): + self.show_msg(_('Rebuilding, please wait...')) + QTimer.singleShot(5, self.do_preview) + + def do_preview(self): + rebuilt = self.rebuild_it() + if rebuilt is not None: + self.parent().iactions['View']._view_file(rebuilt) + + def rebuild(self): + self.show_msg(_('Rebuilding, please wait...')) + QTimer.singleShot(5, self.do_rebuild) + + def do_rebuild(self): + rebuilt = self.rebuild_it() + if rebuilt is not None: + fmt = os.path.splitext(rebuilt)[1][1:].upper() + with open(rebuilt, 'rb') as f: + self.db.add_format(self.book_id, fmt, f, index_is_id=True) + self.accept() + + def cancel(self): + self.reject() + + def cleanup(self): + if isosx and self._exploded: + try: + import appscript + self.finder = appscript.app('Finder') + self.finder.Finder_windows[os.path.basename(self._exploded)].close() + except: + pass + + for f in self._cleanup_files: + try: + os.remove(f) + except: + pass + + for d in self._cleanup_dirs: + try: + shutil.rmtree(d) + except: + pass + + @property + def db(self): + return self.db_ref() + + @property + def current_format(self): + for b in self.fmt_choice_buttons: + if b.isChecked(): + return unicode(b.text()) class TweakEpubAction(InterfaceAction): name = 'Tweak ePub' action_spec = (_('Tweak Book'), 'trim.png', - _('Make small changes to ePub or HTMLZ format books'), + _('Make small changes to ePub, HTMLZ or AZW3 format books'), _('T')) dont_add_to = frozenset(['context-menu-device']) action_type = 'current' def genesis(self): - self.qaction.triggered.connect(self.edit_epub_in_situ) + self.qaction.triggered.connect(self.tweak_book) - def edit_epub_in_situ(self, *args): + def tweak_book(self): row = self.gui.library_view.currentIndex() if not row.isValid(): return error_dialog(self.gui, _('Cannot tweak Book'), _('No book selected'), show=True) book_id = self.gui.library_view.model().id(row) - - # Confirm 'EPUB' in formats - try: - path_to_epub = self.gui.library_view.model().db.format( - book_id, 'EPUB', index_is_id=True, as_path=True) - except: - path_to_epub = None - - # Confirm 'HTMLZ' in formats - try: - path_to_htmlz = self.gui.library_view.model().db.format( - book_id, 'HTMLZ', index_is_id=True, as_path=True) - except: - path_to_htmlz = None - - if not path_to_epub and not path_to_htmlz: - return error_dialog(self.gui, _('Cannot tweak Book'), - _('The book must be in ePub or HTMLZ format to tweak.' - '\n\nFirst convert the book to ePub or HTMLZ.'), + db = self.gui.library_view.model().db + fmts = db.formats(book_id, index_is_id=True) or '' + fmts = [x.lower().strip() for x in fmts.split(',')] + tweakable_fmts = set(fmts).intersection({'epub', 'htmlz', 'azw3', + 'mobi', 'azw'}) + if not tweakable_fmts: + return error_dialog(self.gui, _('Cannot Tweak Book'), + _('The book must be in ePub, HTMLZ or AZW3 formats to tweak.' + '\n\nFirst convert the book to one of these formats.'), show=True) - - # Launch modal dialog waiting for user to tweak or cancel - if tweaks['tweak_book_prefer'] == 'htmlz': - path_to_book = path_to_htmlz or path_to_epub - else: - path_to_book = path_to_epub or path_to_htmlz - - dlg = TweakEpub(self.gui, path_to_book) - if dlg.exec_() == dlg.Accepted: - self.update_db(book_id, dlg._output) + dlg = TweakBook(self.gui, book_id, tweakable_fmts, db) + dlg.exec_() dlg.cleanup() - os.remove(path_to_book) - def update_db(self, book_id, rebuilt): - ''' - Update the calibre db with the tweaked epub - ''' - fmt = os.path.splitext(rebuilt)[1][1:].upper() - self.gui.library_view.model().db.add_format(book_id, fmt, - open(rebuilt, 'rb'), index_is_id=True) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index 4b12335fe3..00bd4135b1 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -334,6 +334,7 @@ class CoverView(QWidget): # {{{ self.pixmap = pmap self.do_layout() self.update() + self.update_tooltip(getattr(self.parent(), 'current_path', '')) if not config['disable_animations']: self.animation.start() id_ = self.data.get('id', None) diff --git a/src/calibre/gui2/comments_editor.py b/src/calibre/gui2/comments_editor.py index 2659339190..69e17ef028 100644 --- a/src/calibre/gui2/comments_editor.py +++ b/src/calibre/gui2/comments_editor.py @@ -627,38 +627,4 @@ if __name__ == '__main__': w = Editor() w.resize(800, 600) w.show() -# testing {{{ - - w.html = ''' -
- -

From Publishers Weekly

-
- Starred Review. Paul Dirac (1902–1984) shared the Nobel Prize for physics with Erwin Schrödinger in 1933, but whereas physicists regard Dirac as one of the giants of the 20th century, he isn't as well known outside the profession. This may be due to the lack of humorous quips attributed to Dirac, as compared with an Einstein or a Feynman. If he spoke at all, it was with one-word answers that made Calvin Coolidge look loquacious . Dirac adhered to Keats's admonition that Beauty is truth, truth beauty: if an equation was beautiful, it was probably correct, and vice versa. His most famous equation predicted the positron (now used in PET scans), which is the antiparticle of the electron, and antimatter in general. In 1955, Dirac came up with a primitive version of string theory, which today is the rock star branch of physics. Physicist Farmelo (It Must Be Beautiful) speculates that Dirac suffered from undiagnosed autism because his character quirks resembled autism's symptoms. Farmelo proves himself a wizard at explaining the arcane aspects of particle physics. His great affection for his odd but brilliant subject shows on every page, giving Dirac the biography any great scientist deserves. (Sept.)
Copyright © Reed Business Information, a division of Reed Elsevier Inc. All rights reserved. - -
-

Review

-
-
Kirkus *Starred Review*
“Paul Dirac was a giant of 20th-century physics, and this rich, satisfying biography does him justice…. [A] nuanced portrayal of an introverted eccentric who held his own in a small clique of revolutionary scientific geniuses.”

Peter Higgs, Times (UK)
“Fascinating reading… Graham Farmelo has done a splendid job of portraying Dirac and his world. The biography is a major achievement.”

Telegraph
“If Newton was the Shakespeare of British physics, Dirac was its Milton, the most fascinating and enigmatic of all our great scientists. And he now has a biography to match his talents: a wonderful book by Graham Farmelo. The story it tells is moving, sometimes comic, sometimes infinitely sad, and goes to the roots of what we mean by truth in science.”

New Statesman
“A marvelously rich and intimate study.”

Sunday Herald
“Farmelo’s splendid biography has enough scientific exposition for the biggest science fan and enough human interest for the rest of us. It creates a picture of a man who was a great theoretical scientist but also an awkward but oddly endearing human being…. This is a fine book: a fitting tribute to a significant and intriguing scientific figure.”

The Economist
“[A] sympathetic portrait….Of the small group of young men who developed quantum mechanics and revolutionized physics almost a century ago, he truly stands out. Paul Dirac was a strange man in a strange world. This biography, long overdue, is most welcome.”

Times Higher Education Supplement (UK)
“A page-turner about Dirac and quantum physics seems a contradiction in terms, but Graham Farmelo's new book, The Strangest Man, is an eminently readable account of the developments in physics throughout the 1920s, 1930s and 1940s and the life of one of the discipline's key scientists.”

New Scientist
“Enthralling… Regardless of whether Dirac was autistic or simply unpleasant, he is an icon of modern thought and Farmelo's book gives us a genuine insight into his life and times.”

John Gribbin, Literary Review
“Fascinating …[A] suberb book.”

Tom Stoppard
“In the group portrait of genius in 20th century physics, Paul Dirac is the stick figure. Who was he, and what did he do? For all non-physicists who have followed the greatest intellectual adventure of modern times, this is the missing book.”

Michael Frayn
“Graham Farmelo has found the subject he was born to write about, and brought it off triumphantly. Dirac was one of the great founding fathers of modern physics, a theoretician who explored the sub-atomic world through the power of pure mathematics. He was also a most extraordinary man - an extreme introvert, and perhaps autistic. Farmelo traces the outward events as authoritatively as the inward. His book is a monumental achievement – one of the great scientific biographies.”

Roger Highfield, Editor,New Scientist
“A must-read for anyone interested in the extraordinary power of pure thought. With this revelatory, moving and definitive biography, Graham Farmelo provides the first real glimpse inside the bizarre mind of Paul Dirac.”

Martin Rees, President of the Royal Society, Master of Trinity College, Professor of Cosmology and Astrophysics at the University of Cambridge and Astronomer Royal
“Paul Dirac, though a quiet and withdrawn character, made towering contributions to the greatest scientific revolution of the 20th century. In this sensitive and meticulously researched biography, Graham Farmelo does Dirac proud, and offers a wonderful insight into the European academic environment in which his creativity flourished."

Barnes & Noble Review
“Farmelo explains all the science relevant to understanding Dirac, and does it well; equally good is his careful and copious account of a personal life that was dogged by a sense of tragedy…. [I]f [Dirac] could read Farmelo’s absorbing and accessible account of his life he would see that it had magic in it, and triumph: the magic of revelations about the deep nature of reality, and the triumph of having moved human understanding several steps further towards the light.”

Newark Star-Ledger
“[An] excellently researched biography…. [T]his book is a major step toward making a staggeringly brilliant, remote man seem likeable.”

Los Angeles Times
“Graham Farmelo has managed to haul Dirac onstage in an affectionate and meticulously researched book that illuminates both his era and his science…. Farmelo is very good at portraying this locked-in, asocial creature, often with an eerie use of the future-perfect tense…, which has the virtue of putting the reader in the same room with people who are long gone.”

SeedMagazine.com
“[A] tour de force filled with insight and revelation. The Strangest Man offers an unprecedented and gripping view of Dirac not only as a scientist, but also as a human being.”

New York Times Book Review
“This biography is a gift. It is both wonderfully written (certainly not a given in the category Accessible Biographies of Mathematical Physicists) and a thought-provoking meditation on human achievement, limitations and the relations between the two…. [T]he most satisfying and memorable biography I have read in years.”

Time Magazine
“Paul Dirac won a Nobel Prize for Physics at 31. He was one of quantum mechanics’ founding fathers, an Einstein-level genius. He was also virtually incapable of having normal social interactions. Graham Farmelo’s biography explains Dirac’s mysterious life and work.”

Library Journal
“Farmelo did not pick the easiest biography to write – its subject lived a largely solitary life in deep thought. But Dirac was also beset with tragedy… and in that respect, the author proposes some novel insights into what shaped the man. This would be a strong addition to a bibliography of magnificent 20th-century physicist biographies, including Walter Issacson’s Einstein, Kai Bird and Martin J. Sherwin’s American Prometheus: The Triumph and Tragedy of J. Robert Oppenheimer, and James Gleick’s Genius: The Life and Science of Richard Feynman.”

American Journal of Physics
“[A] very moving biography…. It would have been easy to simply fill the biography with Dirac stories of which there is a cornucopia, many of which are actually true. But Farmelo does much more than that. He has met and spoken with people who knew Dirac including the surviving members of his family. He has been to where Dirac lived and worked and he understands the physics. What has emerged is a 558 page biography, which is a model of the genre. Dirac was so private and emotionally self-contained that one wonders if anyone really knew him. Farmelo’s book is as close as we are likely to come."

American Scientist
“[A] highly readable and sympathetic biography of the taciturn British physicist who can be said, with little exaggeration, to have invented modern theoretical physics. The book is a real achievement, alternately gripping and illuminating.”

Natural History
“Farmelo’s eloquent and empathetic examination of Dirac’s life raises this book above the level of workmanlike popularization. Using personal interviews, scientific archives, and newly released documents and letters, he’s managed – as much as anyone could – to dispel the impression of the physicist as a real-life Mr. Spock, the half Vulcan of Star Trek.”

Science
“[A] consummate and seamless biography…. Farmelo has succeeded masterfully in the difficult genre of writing a great scientist’s life for a general audience.”

Physics Today
“[An] excellent biography of a hero of physics…. [I]n The Strangest Man, we are treated to a fascinating, thoroughly researched, and well-written account of one of the most important figures of modern physics.”

Nature
“As this excellent biography by Graham Farmelo shows, Dirac’s contributions to science were profound and far-ranging; modern ideas that have their origins in quantum electrodynamics are inspired by his insight…. The effortless writing style shows that it is possible to describe profound ideas without compromising scientific integrity or readability."

Freeman Dyson, New York Review of Books
“In Farmelo’s book we see Dirac as a character in a human drama, carrying his full share of tragedy as well as triumph.”

American Journal of Physics
“Farmelo’s exhaustively researched biography…not only traces the life of its title figure but portrays the unfolding of quantum mechanics with cinematic scope…. He repeatedly zooms his storyteller’s lens in and out between intimate close-ups and grand scenes, all the while attempting to make the physics comprehensible to the general readership without trivializing it. In his telling, the front-line scientists are a competitive troupe of explorers, jockeying for renown – only the uncharted territory is in the mind and the map is mathematical…. We read works like Farmelo’s for enlightenment, for inspiration, and for the reminder that science is a quintessentially human endeavor, with all...

- -
-
-
- -

From Publishers Weekly

-
- Starred Review. Paul Dirac (1902–1984) shared the Nobel Prize for physics with Erwin Schrödinger in 1933, but whereas physicists regard Dirac as one of the giants of the 20th century, he isn't as well known outside the profession. This may be due to the lack of humorous quips attributed to Dirac, as compared with an Einstein or a Feynman. If he spoke at all, it was with one-word answers that made Calvin Coolidge look loquacious . Dirac adhered to Keats's admonition that Beauty is truth, truth beauty: if an equation was beautiful, it was probably correct, and vice versa. His most famous equation predicted the positron (now used in PET scans), which is the antiparticle of the electron, and antimatter in general. In 1955, Dirac came up with a primitive version of string theory, which today is the rock star branch of physics. Physicist Farmelo (It Must Be Beautiful) speculates that Dirac suffered from undiagnosed autism because his character quirks resembled autism's symptoms. Farmelo proves himself a wizard at explaining the arcane aspects of particle physics. His great affection for his odd but brilliant subject shows on every page, giving Dirac the biography any great scientist deserves. (Sept.)
Copyright © Reed Business Information, a division of Reed Elsevier Inc. All rights reserved. - -
-

Review

-
-
Kirkus *Starred Review*
“Paul Dirac was a giant of 20th-century physics, and this rich, satisfying biography does him justice…. [A] nuanced portrayal of an introverted eccentric who held his own in a small clique of revolutionary scientific geniuses.”

Peter Higgs, Times (UK)
“Fascinating reading… Graham Farmelo has done a splendid job of portraying Dirac and his world. The biography is a major achievement.”

Telegraph
“If Newton was the Shakespeare of British physics, Dirac was its Milton, the most fascinating and enigmatic of all our great scientists. And he now has a biography to match his talents: a wonderful book by Graham Farmelo. The story it tells is moving, sometimes comic, sometimes infinitely sad, and goes to the roots of what we mean by truth in science.”

New Statesman
“A marvelously rich and intimate study.”

Sunday Herald
“Farmelo’s splendid biography has enough scientific exposition for the biggest science fan and enough human interest for the rest of us. It creates a picture of a man who was a great theoretical scientist but also an awkward but oddly endearing human being…. This is a fine book: a fitting tribute to a significant and intriguing scientific figure.”

The Economist
“[A] sympathetic portrait….Of the small group of young men who developed quantum mechanics and revolutionized physics almost a century ago, he truly stands out. Paul Dirac was a strange man in a strange world. This biography, long overdue, is most welcome.”

Times Higher Education Supplement (UK)
“A page-turner about Dirac and quantum physics seems a contradiction in terms, but Graham Farmelo's new book, The Strangest Man, is an eminently readable account of the developments in physics throughout the 1920s, 1930s and 1940s and the life of one of the discipline's key scientists.”

New Scientist
“Enthralling… Regardless of whether Dirac was autistic or simply unpleasant, he is an icon of modern thought and Farmelo's book gives us a genuine insight into his life and times.”

John Gribbin, Literary Review
“Fascinating …[A] suberb book.”

Tom Stoppard
“In the group portrait of genius in 20th century physics, Paul Dirac is the stick figure. Who was he, and what did he do? For all non-physicists who have followed the greatest intellectual adventure of modern times, this is the missing book.”

Michael Frayn
“Graham Farmelo has found the subject he was born to write about, and brought it off triumphantly. Dirac was one of the great founding fathers of modern physics, a theoretician who explored the sub-atomic world through the power of pure mathematics. He was also a most extraordinary man - an extreme introvert, and perhaps autistic. Farmelo traces the outward events as authoritatively as the inward. His book is a monumental achievement – one of the great scientific biographies.”

Roger Highfield, Editor,New Scientist
“A must-read for anyone interested in the extraordinary power of pure thought. With this revelatory, moving and definitive biography, Graham Farmelo provides the first real glimpse inside the bizarre mind of Paul Dirac.”

Martin Rees, President of the Royal Society, Master of Trinity College, Professor of Cosmology and Astrophysics at the University of Cambridge and Astronomer Royal
“Paul Dirac, though a quiet and withdrawn character, made towering contributions to the greatest scientific revolution of the 20th century. In this sensitive and meticulously researched biography, Graham Farmelo does Dirac proud, and offers a wonderful insight into the European academic environment in which his creativity flourished."

Barnes & Noble Review
“Farmelo explains all the science relevant to understanding Dirac, and does it well; equally good is his careful and copious account of a personal life that was dogged by a sense of tragedy…. [I]f [Dirac] could read Farmelo’s absorbing and accessible account of his life he would see that it had magic in it, and triumph: the magic of revelations about the deep nature of reality, and the triumph of having moved human understanding several steps further towards the light.”

Newark Star-Ledger
“[An] excellently researched biography…. [T]his book is a major step toward making a staggeringly brilliant, remote man seem likeable.”

Los Angeles Times
“Graham Farmelo has managed to haul Dirac onstage in an affectionate and meticulously researched book that illuminates both his era and his science…. Farmelo is very good at portraying this locked-in, asocial creature, often with an eerie use of the future-perfect tense…, which has the virtue of putting the reader in the same room with people who are long gone.”

SeedMagazine.com
“[A] tour de force filled with insight and revelation. The Strangest Man offers an unprecedented and gripping view of Dirac not only as a scientist, but also as a human being.”

New York Times Book Review
“This biography is a gift. It is both wonderfully written (certainly not a given in the category Accessible Biographies of Mathematical Physicists) and a thought-provoking meditation on human achievement, limitations and the relations between the two…. [T]he most satisfying and memorable biography I have read in years.”

Time Magazine
“Paul Dirac won a Nobel Prize for Physics at 31. He was one of quantum mechanics’ founding fathers, an Einstein-level genius. He was also virtually incapable of having normal social interactions. Graham Farmelo’s biography explains Dirac’s mysterious life and work.”

Library Journal
“Farmelo did not pick the easiest biography to write – its subject lived a largely solitary life in deep thought. But Dirac was also beset with tragedy… and in that respect, the author proposes some novel insights into what shaped the man. This would be a strong addition to a bibliography of magnificent 20th-century physicist biographies, including Walter Issacson’s Einstein, Kai Bird and Martin J. Sherwin’s American Prometheus: The Triumph and Tragedy of J. Robert Oppenheimer, and James Gleick’s Genius: The Life and Science of Richard Feynman.”

American Journal of Physics
“[A] very moving biography…. It would have been easy to simply fill the biography with Dirac stories of which there is a cornucopia, many of which are actually true. But Farmelo does much more than that. He has met and spoken with people who knew Dirac including the surviving members of his family. He has been to where Dirac lived and worked and he understands the physics. What has emerged is a 558 page biography, which is a model of the genre. Dirac was so private and emotionally self-contained that one wonders if anyone really knew him. Farmelo’s book is as close as we are likely to come."

American Scientist
“[A] highly readable and sympathetic biography of the taciturn British physicist who can be said, with little exaggeration, to have invented modern theoretical physics. The book is a real achievement, alternately gripping and illuminating.”

Natural History
“Farmelo’s eloquent and empathetic examination of Dirac’s life raises this book above the level of workmanlike popularization. Using personal interviews, scientific archives, and newly released documents and letters, he’s managed – as much as anyone could – to dispel the impression of the physicist as a real-life Mr. Spock, the half Vulcan of Star Trek.”

Science
“[A] consummate and seamless biography…. Farmelo has succeeded masterfully in the difficult genre of writing a great scientist’s life for a general audience.”

Physics Today
“[An] excellent biography of a hero of physics…. [I]n The Strangest Man, we are treated to a fascinating, thoroughly researched, and well-written account of one of the most important figures of modern physics.”

Nature
“As this excellent biography by Graham Farmelo shows, Dirac’s contributions to science were profound and far-ranging; modern ideas that have their origins in quantum electrodynamics are inspired by his insight…. The effortless writing style shows that it is possible to describe profound ideas without compromising scientific integrity or readability."

Freeman Dyson, New York Review of Books
“In Farmelo’s book we see Dirac as a character in a human drama, carrying his full share of tragedy as well as triumph.”

American Journal of Physics
“Farmelo’s exhaustively researched biography…not only traces the life of its title figure but portrays the unfolding of quantum mechanics with cinematic scope…. He repeatedly zooms his storyteller’s lens in and out between intimate close-ups and grand scenes, all the while attempting to make the physics comprehensible to the general readership without trivializing it. In his telling, the front-line scientists are a competitive troupe of explorers, jockeying for renown – only the uncharted territory is in the mind and the map is mathematical…. We read works like Farmelo’s for enlightenment, for inspiration, and for the reminder that science is a quintessentially human endeavor, with all...

- -
-
- '''.decode('utf-8') - app.exec_() - #print w.html.encode('utf-8') - -# }}} #print w.html diff --git a/src/calibre/gui2/complete.py b/src/calibre/gui2/complete.py index b5c1fc8b3e..fb1f39dfa3 100644 --- a/src/calibre/gui2/complete.py +++ b/src/calibre/gui2/complete.py @@ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en' from PyQt4.Qt import (QLineEdit, QAbstractListModel, Qt, - QApplication, QCompleter, QMetaObject) + QApplication, QCompleter, pyqtSignal) from calibre.utils.icu import sort_key, lower from calibre.gui2 import NONE @@ -158,6 +158,8 @@ class MultiCompleteLineEdit(QLineEdit, LineEditECM): class MultiCompleteComboBox(EnComboBox): + clear_edit_text = pyqtSignal() + def __init__(self, *args): EnComboBox.__init__(self, *args) self.setLineEdit(MultiCompleteLineEdit(self)) @@ -169,6 +171,8 @@ class MultiCompleteComboBox(EnComboBox): self.dummy_model = CompleteModel(self) c.setModel(self.dummy_model) self.lineEdit()._completer.setWidget(self) + self.clear_edit_text.connect(self.clearEditText, + type=Qt.QueuedConnection) def update_items_cache(self, complete_items): self.lineEdit().update_items_cache(complete_items) @@ -191,8 +195,7 @@ class MultiCompleteComboBox(EnComboBox): what = unicode(what) le = self.lineEdit() if not what.strip(): - QMetaObject.invokeMethod(self, 'clearEditText', - Qt.QueuedConnection) + self.clear_edit_text.emit() else: self.setEditText(what) le.selectAll() diff --git a/src/calibre/gui2/convert/__init__.py b/src/calibre/gui2/convert/__init__.py index 73b478ac47..84667aa740 100644 --- a/src/calibre/gui2/convert/__init__.py +++ b/src/calibre/gui2/convert/__init__.py @@ -233,22 +233,26 @@ class Widget(QWidget): pass def setup_help(self, help_provider): - w = textwrap.TextWrapper(80) for name in self._options: g = getattr(self, 'opt_'+name, None) if g is None: continue help = help_provider(name) if not help: continue + if self.setup_help_handler(g, help): continue g._help = help - htext = u'
%s
'%prepare_string_for_xml( - '\n'.join(w.wrap(help))) - g.setToolTip(htext) - g.setWhatsThis(htext) - g.__class__.enterEvent = lambda obj, event: self.set_help(getattr(obj, '_help', obj.toolTip())) + self.setup_widget_help(g) + + def setup_widget_help(self, g): + w = textwrap.TextWrapper(80) + htext = u'
%s
'%prepare_string_for_xml('\n'.join(w.wrap(g._help))) + g.setToolTip(htext) + g.setWhatsThis(htext) + g.__class__.enterEvent = lambda obj, event: self.set_help(getattr(obj, '_help', obj.toolTip())) def set_value_handler(self, g, val): + 'Return True iff you handle setting the value for g' return False def post_set_value(self, g, val): @@ -260,6 +264,9 @@ class Widget(QWidget): def post_get_value(self, g): pass + def setup_help_handler(self, g, help): + return False + def break_cycles(self): self.db = None diff --git a/src/calibre/gui2/convert/azw3_output.py b/src/calibre/gui2/convert/azw3_output.py new file mode 100644 index 0000000000..0acb436d2c --- /dev/null +++ b/src/calibre/gui2/convert/azw3_output.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import with_statement + +__license__ = 'GPL v3' +__copyright__ = '2009, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + + +from calibre.gui2.convert.azw3_output_ui import Ui_Form +from calibre.gui2.convert import Widget + +font_family_model = None + +class PluginWidget(Widget, Ui_Form): + + TITLE = _('AZW3 Output') + HELP = _('Options specific to')+' AZW3 '+_('output') + COMMIT_NAME = 'azw3_output' + ICON = I('mimetypes/mobi.png') + + def __init__(self, parent, get_option, get_help, db=None, book_id=None): + Widget.__init__(self, parent, + ['prefer_author_sort', 'toc_title', + 'mobi_toc_at_start', + 'dont_compress', 'no_inline_toc', 'share_not_sync', + ] + ) + self.db, self.book_id = db, book_id + + self.initialize_options(get_option, get_help, db, book_id) + + diff --git a/src/calibre/gui2/convert/azw3_output.ui b/src/calibre/gui2/convert/azw3_output.ui new file mode 100644 index 0000000000..b85c6155e9 --- /dev/null +++ b/src/calibre/gui2/convert/azw3_output.ui @@ -0,0 +1,82 @@ + + + Form + + + + 0 + 0 + 724 + 342 + + + + Form + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Use author &sort for author + + + + + + + &Title for Table of Contents: + + + opt_toc_title + + + + + + + Enable sharing of book content via Facebook, etc. WARNING: Disables last read syncing + + + + + + + Do not add Table of Contents to book + + + + + + + Put generated Table of Contents at &start of book instead of end + + + + + + + + + + Disable compression of the file contents + + + + + + + + diff --git a/src/calibre/gui2/convert/metadata.py b/src/calibre/gui2/convert/metadata.py index 80311502e8..68e90be9ef 100644 --- a/src/calibre/gui2/convert/metadata.py +++ b/src/calibre/gui2/convert/metadata.py @@ -95,9 +95,15 @@ class MetadataWidget(Widget, Ui_Form): if not pm.isNull(): self.cover.setPixmap(pm) self.cover_data = cover + self.set_cover_tooltip(pm) else: self.cover.setPixmap(QPixmap(I('default_cover.png'))) + self.cover.setToolTip(_('This book has no cover')) + def set_cover_tooltip(self, pm): + tt = _('Cover size: %(width)d x %(height)d pixels') % dict( + width=pm.width(), height=pm.height()) + self.cover.setToolTip(tt) def initialize_combos(self): self.initalize_authors() @@ -205,6 +211,7 @@ class MetadataWidget(Widget, Ui_Form): d.exec_() else: self.cover_path.setText(_file) + self.set_cover_tooltip(pix) self.cover.setPixmap(pix) self.cover_changed = True self.cpixmap = pix diff --git a/src/calibre/gui2/convert/regex_builder.py b/src/calibre/gui2/convert/regex_builder.py index bbbef7e741..3ce8ac36d5 100644 --- a/src/calibre/gui2/convert/regex_builder.py +++ b/src/calibre/gui2/convert/regex_builder.py @@ -6,17 +6,16 @@ __docformat__ = 'restructuredtext en' import re, os -from PyQt4.QtCore import SIGNAL, Qt, pyqtSignal -from PyQt4.QtGui import (QDialog, QWidget, QDialogButtonBox, - QBrush, QTextCursor, QTextEdit) +from PyQt4.Qt import (QDialog, QWidget, QDialogButtonBox, + QBrush, QTextCursor, QTextEdit, QByteArray, Qt, pyqtSignal) from calibre.gui2.convert.regex_builder_ui import Ui_RegexBuilder from calibre.gui2.convert.xexp_edit_ui import Ui_Form as Ui_Edit -from calibre.gui2 import error_dialog, choose_files -from calibre.ebooks.oeb.iterator import EbookIterator -from calibre.ebooks.conversion.preprocess import HTMLPreProcessor +from calibre.gui2 import error_dialog, choose_files, gprefs from calibre.gui2.dialogs.choose_format import ChooseFormatDialog from calibre.constants import iswindows +from calibre.utils.ipc.simple_worker import fork_job, WorkerError +from calibre.ptempfile import TemporaryFile class RegexBuilder(QDialog, Ui_RegexBuilder): @@ -28,7 +27,8 @@ class RegexBuilder(QDialog, Ui_RegexBuilder): self.regex_valid() if not db or not book_id: - self.button_box.addButton(QDialogButtonBox.Open) + button = self.button_box.addButton(QDialogButtonBox.Open) + button.clicked.connect(self.open_clicked) elif not doc and not self.select_format(db, book_id): self.cancelled = True return @@ -37,13 +37,23 @@ class RegexBuilder(QDialog, Ui_RegexBuilder): self.preview.setPlainText(doc) self.cancelled = False - self.connect(self.button_box, SIGNAL('clicked(QAbstractButton*)'), self.button_clicked) - self.connect(self.regex, SIGNAL('textChanged(QString)'), self.regex_valid) - self.connect(self.test, SIGNAL('clicked()'), self.do_test) - self.connect(self.previous, SIGNAL('clicked()'), self.goto_previous) - self.connect(self.next, SIGNAL('clicked()'), self.goto_next) + self.button_box.accepted.connect(self.accept) + self.regex.textChanged[str].connect(self.regex_valid) + for src, slot in (('test', 'do'), ('previous', 'goto'), ('next', + 'goto')): + getattr(self, src).clicked.connect(getattr(self, '%s_%s'%(slot, + src))) + self.test.setDefault(True) self.match_locs = [] + geom = gprefs.get('regex_builder_geometry', None) + if geom is not None: + self.restoreGeometry(QByteArray(geom)) + self.finished.connect(self.save_state) + + def save_state(self, result): + geom = bytearray(self.saveGeometry()) + gprefs['regex_builder_geometry'] = geom def regex_valid(self): regex = unicode(self.regex.text()) @@ -129,6 +139,8 @@ class RegexBuilder(QDialog, Ui_RegexBuilder): d.exec_() if d.result() == QDialog.Accepted: format = d.format() + else: + return False if not format: error_dialog(self, _('No formats available'), @@ -159,25 +171,27 @@ class RegexBuilder(QDialog, Ui_RegexBuilder): return True def open_book(self, pathtoebook): - self.iterator = EbookIterator(pathtoebook) - self.iterator.__enter__(only_input_plugin=True) - text = [u''] - preprocessor = HTMLPreProcessor(None, False) - for path in self.iterator.spine: - with open(path, 'rb') as f: - html = f.read().decode('utf-8', 'replace') - html = preprocessor(html, get_preprocess_html=True) - text.append(html) - self.preview.setPlainText('\n---\n'.join(text)) + with TemporaryFile('_prepprocess_gui') as tf: + err_msg = _('Failed to generate markup for testing. Click ' + '"Show Details" to learn more.') + try: + fork_job('calibre.ebooks.oeb.iterator', 'get_preprocess_html', + (pathtoebook, tf)) + except WorkerError as e: + return error_dialog(self, _('Failed to generate preview'), + err_msg, det_msg=e.orig_tb, show=True) + except: + import traceback + return error_dialog(self, _('Failed to generate preview'), + err_msg, det_msg=traceback.format_exc(), show=True) + with open(tf, 'rb') as f: + self.preview.setPlainText(f.read().decode('utf-8')) - def button_clicked(self, button): - if button == self.button_box.button(QDialogButtonBox.Open): - files = choose_files(self, 'regexp tester dialog', _('Open book'), - select_only_single_file=True) - if files: - self.open_book(files[0]) - if button == self.button_box.button(QDialogButtonBox.Ok): - self.accept() + def open_clicked(self): + files = choose_files(self, 'regexp tester dialog', _('Open book'), + select_only_single_file=True) + if files: + self.open_book(files[0]) def doc(self): return unicode(self.preview.toPlainText()) @@ -194,7 +208,7 @@ class RegexEdit(QWidget, Ui_Edit): self.db = None self.doc_cache = None - self.connect(self.button, SIGNAL('clicked()'), self.builder) + self.button.clicked.connect(self.builder) def builder(self): bld = RegexBuilder(self.db, self.book_id, self.edit.text(), self.doc_cache, self) @@ -226,6 +240,9 @@ class RegexEdit(QWidget, Ui_Edit): def set_doc(self, doc): self.doc_cache = doc + def set_regex(self, regex): + self.edit.setText(regex) + def break_cycles(self): self.db = self.doc_cache = None @@ -237,5 +254,8 @@ class RegexEdit(QWidget, Ui_Edit): def regex(self): return self.text + def clear(self): + self.edit.clear() + def check(self): return True diff --git a/src/calibre/gui2/convert/regex_builder.ui b/src/calibre/gui2/convert/regex_builder.ui index 63aaa89f36..e7b08928c1 100644 --- a/src/calibre/gui2/convert/regex_builder.ui +++ b/src/calibre/gui2/convert/regex_builder.ui @@ -6,8 +6,8 @@ 0 0 - 580 - 503 + 882 + 605 diff --git a/src/calibre/gui2/convert/search_and_replace.py b/src/calibre/gui2/convert/search_and_replace.py index b9e2644008..c8206ebeae 100644 --- a/src/calibre/gui2/convert/search_and_replace.py +++ b/src/calibre/gui2/convert/search_and_replace.py @@ -1,14 +1,18 @@ # -*- coding: utf-8 -*- __license__ = 'GPL 3' -__copyright__ = '2011, John Schember ' +__copyright__ = '2011, John Schember , 2012 Eli Algranti ' __docformat__ = 'restructuredtext en' -import re +import re, codecs, json + +from PyQt4.Qt import Qt, QTableWidgetItem from calibre.gui2.convert.search_and_replace_ui import Ui_Form from calibre.gui2.convert import Widget -from calibre.gui2 import error_dialog +from calibre.gui2 import (error_dialog, question_dialog, choose_files, + choose_save_file) +from calibre import as_unicode class SearchAndReplaceWidget(Widget, Ui_Form): @@ -19,26 +23,143 @@ class SearchAndReplaceWidget(Widget, Ui_Form): STRIP_TEXT_FIELDS = False def __init__(self, parent, get_option, get_help, db=None, book_id=None): + # Dummy attributes to fool the Widget() option handler code. We handle + # everything in our *handler methods. + for i in range(1, 4): + x = 'sr%d_'%i + for y in ('search', 'replace'): + z = x + y + setattr(self, 'opt_'+z, z) + self.opt_search_replace = 'search_replace' + Widget.__init__(self, parent, - ['sr1_search', 'sr1_replace', + ['search_replace', + 'sr1_search', 'sr1_replace', 'sr2_search', 'sr2_replace', 'sr3_search', 'sr3_replace'] ) self.db, self.book_id = db, book_id - self.initialize_options(get_option, get_help, db, book_id) - self.opt_sr1_search.set_msg(_('&Search Regular Expression')) - self.opt_sr1_search.set_book_id(book_id) - self.opt_sr1_search.set_db(db) - self.opt_sr2_search.set_msg(_('&Search Regular Expression')) - self.opt_sr2_search.set_book_id(book_id) - self.opt_sr2_search.set_db(db) - self.opt_sr3_search.set_msg(_('&Search Regular Expression')) - self.opt_sr3_search.set_book_id(book_id) - self.opt_sr3_search.set_db(db) - self.opt_sr1_search.doc_update.connect(self.update_doc) - self.opt_sr2_search.doc_update.connect(self.update_doc) - self.opt_sr3_search.doc_update.connect(self.update_doc) + self.sr_search.set_msg(_('&Search Regular Expression')) + self.sr_search.set_book_id(book_id) + self.sr_search.set_db(db) + + self.sr_search.doc_update.connect(self.update_doc) + + proto = QTableWidgetItem() + proto.setFlags(Qt.ItemFlags(Qt.ItemIsSelectable + Qt.ItemIsEnabled)) + self.search_replace.setItemPrototype(proto) + self.search_replace.setColumnCount(2) + self.search_replace.setColumnWidth(0, 320) + self.search_replace.setColumnWidth(1, 320) + self.search_replace.setHorizontalHeaderLabels([ + _('Search Regular Expression'), _('Replacement Text')]) + + self.sr_add.clicked.connect(self.sr_add_clicked) + self.sr_change.clicked.connect(self.sr_change_clicked) + self.sr_remove.clicked.connect(self.sr_remove_clicked) + self.sr_load.clicked.connect(self.sr_load_clicked) + self.sr_save.clicked.connect(self.sr_save_clicked) + self.sr_up.clicked.connect(self.sr_up_clicked) + self.sr_down.clicked.connect(self.sr_down_clicked) + self.search_replace.currentCellChanged.connect(self.sr_currentCellChanged) + + self.initialize_options(get_option, get_help, db, book_id) + + def sr_add_clicked(self): + if self.sr_search.regex: + row = self.sr_add_row(self.sr_search.regex, self.sr_replace.text()) + self.search_replace.setCurrentCell(row, 0) + + def sr_add_row(self, search, replace): + row = self.search_replace.rowCount() + self.search_replace.setRowCount(row + 1) + newItem = self.search_replace.itemPrototype().clone() + newItem.setText(search) + self.search_replace.setItem(row,0, newItem) + newItem = self.search_replace.itemPrototype().clone() + newItem.setText(replace) + self.search_replace.setItem(row,1, newItem) + return row + + def sr_change_clicked(self): + row = self.search_replace.currentRow() + if row >= 0: + self.search_replace.item(row, 0).setText(self.sr_search.regex) + self.search_replace.item(row, 1).setText(self.sr_replace.text()) + self.search_replace.setCurrentCell(row, 0) + + def sr_remove_clicked(self): + row = self.search_replace.currentRow() + if row >= 0: + self.search_replace.removeRow(row) + self.search_replace.setCurrentCell(row if row < self.search_replace.rowCount() else row-1, 0) + self.sr_search.clear() + self.sr_replace.clear() + + def sr_load_clicked(self): + files = choose_files(self, 'sr_saved_patterns', + _('Load Calibre Search-Replace definitions file'), + filters=[ + (_('Calibre Search-Replace definitions file'), ['csr']) + ], select_only_single_file=True) + if files: + from calibre.ebooks.conversion.cli import read_sr_patterns + try: + self.set_value(self.opt_search_replace, + read_sr_patterns(files[0])) + self.search_replace.setCurrentCell(0, 0) + except Exception as e: + error_dialog(self, _('Failed to read'), + _('Failed to load patterns from %s, click Show details' + ' to learn more.')%files[0], det_msg=as_unicode(e), + show=True) + + def sr_save_clicked(self): + filename = choose_save_file(self, 'sr_saved_patterns', + _('Save Calibre Search-Replace definitions file'), + filters=[ + (_('Calibre Search-Replace definitions file'), ['csr']) + ]) + if filename: + with codecs.open(filename, 'w', 'utf-8') as f: + for search, replace in self.get_definitions(): + f.write(search + u'\n' + replace + u'\n\n') + + def sr_up_clicked(self): + self.cell_rearrange(-1) + + def sr_down_clicked(self): + self.cell_rearrange(1) + + def cell_rearrange(self, i): + row = self.search_replace.currentRow() + for col in xrange(0, self.search_replace.columnCount()): + item1 = self.search_replace.item(row, col) + item2 = self.search_replace.item(row+i, col) + value = item1.text(); + item1.setText(item2.text()) + item2.setText(value) + self.search_replace.setCurrentCell(row+i, 0) + + def sr_currentCellChanged(self, row, column, previousRow, previousColumn) : + if row >= 0: + self.sr_change.setEnabled(True) + self.sr_remove.setEnabled(True) + self.sr_save.setEnabled(True) + self.sr_search.set_regex(self.search_replace.item(row, 0).text()) + self.sr_replace.setText(self.search_replace.item(row, 1).text()) + # set the up/down buttons + self.sr_up.setEnabled(row > 0) + self.sr_down.setEnabled(row < self.search_replace.rowCount()-1) + else: + self.sr_change.setEnabled(False) + self.sr_remove.setEnabled(False) + self.sr_save.setEnabled(False) + self.sr_down.setEnabled(False) + self.sr_up.setEnabled(False) + + def break_cycles(self): Widget.break_cycles(self) @@ -49,29 +170,128 @@ class SearchAndReplaceWidget(Widget, Ui_Form): except: pass - d(self.opt_sr1_search) - d(self.opt_sr2_search) - d(self.opt_sr3_search) + d(self.sr_search) - self.opt_sr1_search.break_cycles() - self.opt_sr2_search.break_cycles() - self.opt_sr3_search.break_cycles() + self.sr_search.break_cycles() def update_doc(self, doc): - self.opt_sr1_search.set_doc(doc) - self.opt_sr2_search.set_doc(doc) - self.opt_sr3_search.set_doc(doc) + self.sr_search.set_doc(doc) def pre_commit_check(self): - for x in ('sr1_search', 'sr2_search', 'sr3_search'): - x = getattr(self, 'opt_'+x) + definitions = self.get_definitions() + + # Verify the search/replace in the edit widgets has been + # included to the list of search/replace definitions + + edit_search = self.sr_search.regex + + if edit_search: + edit_replace = unicode(self.sr_replace.text()) + found = False + for search, replace in definitions: + if search == edit_search and replace == edit_replace: + found = True + break + if not found and not question_dialog(self, + _('Unused Search & Replace definition'), + _('The search / replace definition being edited ' + ' has not been added to the list of definitions. ' + 'Do you wish to continue with the conversion ' + '(the definition will not be used)?')): + return False + + # Verify all search expressions are valid + for search, replace in definitions: try: - pat = unicode(x.regex) - re.compile(pat) + re.compile(search) except Exception as err: error_dialog(self, _('Invalid regular expression'), _('Invalid regular expression: %s')%err, show=True) return False + return True + # Options handling + + def connect_gui_obj_handler(self, g, slot): + if g is self.opt_search_replace: + self.search_replace.cellChanged.connect(slot) + + def get_value_handler(self, g): + if g is self.opt_search_replace: + return json.dumps(self.get_definitions()) + return None + + def get_definitions(self): + ans = [] + for row in xrange(0, self.search_replace.rowCount()): + colItems = [] + for col in xrange(0, self.search_replace.columnCount()): + colItems.append(unicode(self.search_replace.item(row, col).text())) + ans.append(colItems) + return ans + + def set_value_handler(self, g, val): + if g is not self.opt_search_replace: + return True + + try: + rowItems = json.loads(val) + if not isinstance(rowItems, list): + rowItems = [] + except: + rowItems = [] + + if len(rowItems) == 0: + self.search_replace.clearContents() + + self.search_replace.setRowCount(len(rowItems)) + + for row, colItems in enumerate(rowItems): + for col, cellValue in enumerate(colItems): + newItem = self.search_replace.itemPrototype().clone() + newItem.setText(cellValue) + self.search_replace.setItem(row,col, newItem) + return True + + def apply_recommendations(self, recs): + ''' + Handle the legacy sr* options that may have been previously saved. They + are applied only if the new search_replace option has not been set in + recs. + ''' + new_val = None + legacy = {} + rest = {} + for name, val in recs.items(): + if name == 'search_replace': + new_val = val + if name in getattr(recs, 'disabled_options', []): + self.search_replace.setDisabled(True) + elif name.startswith('sr'): + legacy[name] = val if val else '' + else: + rest[name] = val + + if rest: + super(SearchAndReplaceWidget, self).apply_recommendations(rest) + + self.set_value(self.opt_search_replace, None) + if new_val is None and legacy: + for i in range(1, 4): + x = 'sr%d'%i + s, r = x+'_search', x+'_replace' + s, r = legacy.get(s, ''), legacy.get(r, '') + if s: + self.sr_add_row(s, r) + if new_val is not None: + self.set_value(self.opt_search_replace, new_val) + + def setup_help_handler(self, g, help): + if g is self.opt_search_replace: + self.search_replace._help = _( + 'The list of search/replace definitions that will be applied ' + 'to this conversion.') + self.setup_widget_help(self.search_replace) + return True diff --git a/src/calibre/gui2/convert/search_and_replace.ui b/src/calibre/gui2/convert/search_and_replace.ui index 03a74b5ebd..5a70773fea 100644 --- a/src/calibre/gui2/convert/search_and_replace.ui +++ b/src/calibre/gui2/convert/search_and_replace.ui @@ -6,7 +6,7 @@ 0 0 - 468 + 667 451 @@ -32,14 +32,14 @@ - First expression + Search/Replace Definition Edit QLayout::SetMinimumSize - + 0 @@ -60,12 +60,12 @@ &Replacement Text - opt_sr1_replace + sr_replace - + 0 @@ -78,117 +78,167 @@ - - - - 0 - 0 - + + + -1 - - Second Expression + + 0 - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - + + + + Add the current expression to the list of expressions that will be applied + + + &Add + + + + + + + false + + + Edit the currently selected expression + + + &Change + + + + + + + false + + + Remove the currently selected expression + + + &Remove + + + + + + + QFrame::VLine + + + QFrame::Raised + + + 3 + + + + + + + Load a list of expressions from a previously saved file + + + &Load + + + + + + + false + + + Save this list of expressions so that you can re-use it easily - &Replacement Text + &Save - - opt_sr2_replace - - - - - - - - 0 - 0 - - - - - - + + + - - - - 0 - 0 - - - - Third expression - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - &Replacement Text - - - opt_sr3_replace - - - - - - - - 0 - 0 - - - - - - + + + -1 + + + 0 + + + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + + + + + + + + 0 + 0 + + + + + 32 + 16777215 + + + + false + + + Move expression up. + + + + :/images/arrow-up.png:/images/arrow-up.png + + + + + + + + 0 + 0 + + + + + 32 + 16777215 + + + + false + + + Move expression down. + + + + :/images/arrow-down.png:/images/arrow-down.png + + + + + + - <p>Search and replace uses <i>regular expressions</i>. See the <a href="http://manual.calibre-ebook.com/regexp.html">regular expressions tutorial</a> to get started with regular expressions. Also clicking the wizard buttons below will allow you to test your regular expression against the current input document. + <p>Search and replace uses <i>regular expressions</i>. See the <a href="http://manual.calibre-ebook.com/regexp.html">regular expressions tutorial</a> to get started with regular expressions. Also clicking the wizard button below will allow you to test your regular expression against the current input document. When you are happy with an expression, click the Add button to add it to the list of expressions. true @@ -208,6 +258,8 @@ 1 - + + + diff --git a/src/calibre/gui2/convert/single.py b/src/calibre/gui2/convert/single.py index 9a9f55be3b..c889df71fd 100644 --- a/src/calibre/gui2/convert/single.py +++ b/src/calibre/gui2/convert/single.py @@ -6,7 +6,7 @@ __license__ = 'GPL v3' __copyright__ = '2009, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import sys, cPickle, shutil, importlib +import cPickle, shutil, importlib from PyQt4.Qt import QString, SIGNAL, QAbstractListModel, Qt, QVariant, QFont @@ -36,17 +36,14 @@ class NoSupportedInputFormats(Exception): pass def sort_formats_by_preference(formats, prefs): - def fcmp(x, y): + uprefs = [x.upper() for x in prefs] + def key(x): try: - x = prefs.index(x.upper()) + return uprefs.index(x.upper()) except ValueError: - x = sys.maxint - try: - y = prefs.index(y.upper()) - except ValueError: - y = sys.maxint - return cmp(x, y) - return sorted(formats, cmp=fcmp) + pass + return len(prefs) + return sorted(formats, key=key) class GroupModel(QAbstractListModel): @@ -94,8 +91,19 @@ def get_supported_input_formats_for_book(db, book_id): def get_input_format_for_book(db, book_id, pref): + ''' + Return (preferred input format, list of available formats) for the book + identified by book_id. Raises an error if the book has no input formats. + + :param pref: If None, the format used as input for the last conversion, if + any, on this book is used. If not None, should be a lowercase format like + 'epub' or 'mobi'. If you do not want the last converted format to be used, + set pref=False. + ''' if pref is None: pref = get_preferred_input_format_for_book(db, book_id) + if hasattr(pref, 'lower'): + pref = pref.lower() input_formats = get_supported_input_formats_for_book(db, book_id) input_format = pref if pref in input_formats else \ sort_formats_by_preference(input_formats, prefs['input_format_order'])[0] diff --git a/src/calibre/gui2/cover_flow.py b/src/calibre/gui2/cover_flow.py index dd4763782a..b7cebee2c0 100644 --- a/src/calibre/gui2/cover_flow.py +++ b/src/calibre/gui2/cover_flow.py @@ -69,9 +69,10 @@ if pictureflow is not None: ans = self.model.title(index) if not ans: ans = '' + ans = ans.replace('&', '&&') except: ans = '' - return ans.replace('&', '&&') + return ans def subtitle(self, index): try: @@ -315,10 +316,7 @@ class CoverFlowMixin(object): index = m.index(row, 0) if self.library_view.currentIndex().row() != row and index.isValid(): self.cover_flow_sync_flag = False - self.library_view.scroll_to_row(index.row()) - sm = self.library_view.selectionModel() - sm.select(index, sm.ClearAndSelect|sm.Rows) - self.library_view.setCurrentIndex(index) + self.library_view.select_rows([row], using_ids=False) except: import traceback traceback.print_exc() diff --git a/src/calibre/gui2/dialogs/edit_authors_dialog.py b/src/calibre/gui2/dialogs/edit_authors_dialog.py index 300715c6e0..fb25b526a9 100644 --- a/src/calibre/gui2/dialogs/edit_authors_dialog.py +++ b/src/calibre/gui2/dialogs/edit_authors_dialog.py @@ -177,7 +177,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog): ca.triggered.connect(self.paste_from_clipboard) m.addSeparator() - if self.context_item.column() == 0: + if self.context_item is not None and self.context_item.column() == 0: ca = m.addAction(_('Copy to author sort')) ca.triggered.connect(self.copy_au_to_aus) else: diff --git a/src/calibre/gui2/dialogs/message_box.py b/src/calibre/gui2/dialogs/message_box.py index cd1e38682e..e15cd055b9 100644 --- a/src/calibre/gui2/dialogs/message_box.py +++ b/src/calibre/gui2/dialogs/message_box.py @@ -158,9 +158,16 @@ _proceed_memory = [] class ProceedNotification(MessageBox): # {{{ + ''' + WARNING: This class is deprecated. DO not use it as some users ahve + reported crashes when closing the dialog box generated by this class. + Instead use: gui.proceed_question(...) The arguments are the same as for + this class. + ''' + def __init__(self, callback, payload, html_log, log_viewer_title, title, msg, det_msg='', show_copy_button=False, parent=None, - cancel_callback=None): + cancel_callback=None, log_is_file=False): ''' A non modal popup that notifies the user that a background task has been completed. @@ -175,12 +182,15 @@ class ProceedNotification(MessageBox): # {{{ :param title: The title for this popup :param msg: The msg to display :param det_msg: Detailed message + :param log_is_file: If True the html_log parameter is interpreted as + the path to a file on disk containing the log encoded with utf-8 ''' MessageBox.__init__(self, MessageBox.QUESTION, title, msg, det_msg=det_msg, show_copy_button=show_copy_button, parent=parent) self.payload = payload self.html_log = html_log + self.log_is_file = log_is_file self.log_viewer_title = log_viewer_title self.vlb = self.bb.addButton(_('View log'), self.bb.ActionRole) @@ -192,7 +202,11 @@ class ProceedNotification(MessageBox): # {{{ _proceed_memory.append(self) def show_log(self): - self.log_viewer = ViewLog(self.log_viewer_title, self.html_log, + log = self.html_log + if self.log_is_file: + with open(log, 'rb') as f: + log = f.read().decode('utf-8') + self.log_viewer = ViewLog(self.log_viewer_title, log, parent=self) def do_proceed(self, result): @@ -202,9 +216,9 @@ class ProceedNotification(MessageBox): # {{{ gui = get_gui() gui.proceed_requested.emit(func, self.payload) # Ensure this notification is garbage collected + self.vlb.clicked.disconnect() self.callback = self.cancel_callback = self.payload = None self.setParent(None) - self.vlb.clicked.disconnect() _proceed_memory.remove(self) def done(self, r): diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index c956036fda..b7af971a63 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -417,6 +417,8 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): self.writable_fields.sort() self.search_field.setMaxVisibleItems(25) self.destination_field.setMaxVisibleItems(25) + self.testgrid.setColumnStretch(1, 1) + self.testgrid.setColumnStretch(2, 1) offset = 10 self.s_r_number_of_books = min(10, len(self.ids)) for i in range(1,self.s_r_number_of_books+1): diff --git a/src/calibre/gui2/dialogs/search.py b/src/calibre/gui2/dialogs/search.py index b4976e2657..b6a5a81df1 100644 --- a/src/calibre/gui2/dialogs/search.py +++ b/src/calibre/gui2/dialogs/search.py @@ -173,7 +173,7 @@ class SearchDialog(QDialog, Ui_Dialog): self.box_last_values['tags_box'] = tags tags = [t.strip() for t in tags.split(',') if t.strip()] if tags: - tags = ['tags:"=' + t + '"' for t in tags] + tags = ['tags:"' + self.mc + t + '"' for t in tags] ans.append('(' + ' or '.join(tags) + ')') general = unicode(self.general_box.text()) self.box_last_values['general_box'] = general diff --git a/src/calibre/gui2/dialogs/tweak_epub.py b/src/calibre/gui2/dialogs/tweak_epub.py deleted file mode 100755 index 503b1f45d3..0000000000 --- a/src/calibre/gui2/dialogs/tweak_epub.py +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import with_statement - -__license__ = 'GPL v3' -__copyright__ = '2010, Kovid Goyal ' -__docformat__ = 'restructuredtext en' - -import os, shutil -from itertools import repeat, izip -from calibre.utils.zipfile import ZipFile, ZIP_DEFLATED, ZIP_STORED - -from PyQt4.Qt import QDialog - -from calibre.constants import isosx -from calibre.gui2 import open_local_file, error_dialog -from calibre.gui2.dialogs.tweak_epub_ui import Ui_Dialog -from calibre.libunzip import extract as zipextract -from calibre.ptempfile import (PersistentTemporaryDirectory, - PersistentTemporaryFile) - -class TweakEpub(QDialog, Ui_Dialog): - ''' - Display controls for tweaking ePubs - - ''' - - def __init__(self, parent, epub): - QDialog.__init__(self, parent) - - self._epub = epub - self._exploded = None - self._output = None - self.ishtmlz = epub.lower().endswith('.htmlz') - self.rebuilt_name = 'rebuilt.' + ('htmlz' if self.ishtmlz else 'epub') - - # Run the dialog setup generated from tweak_epub.ui - self.setupUi(self) - for x, props in [(self, ['windowTitle']), (self.label, ['text'])]+\ - list(izip([self.cancel_button, self.explode_button, - self.rebuild_button, self.preview_button], - repeat(['text', 'statusTip', 'toolTip']))): - for prop in props: - val = unicode(getattr(x, prop)()) - val = val.format('HTMLZ' if self.ishtmlz else 'ePub') - prop = 'set' + prop[0].upper() + prop[1:] - getattr(x, prop)(val) - - self.cancel_button.clicked.connect(self.reject) - self.explode_button.clicked.connect(self.explode) - self.rebuild_button.clicked.connect(self.rebuild) - self.preview_button.clicked.connect(self.preview) - - # Position update dialog overlaying top left of app window - parent_loc = parent.pos() - self.move(parent_loc.x(),parent_loc.y()) - - self.gui = parent - self._preview_files = [] - - def cleanup(self): - if isosx: - try: - import appscript - self.finder = appscript.app('Finder') - self.finder.Finder_windows[os.path.basename(self._exploded)].close() - except: - # appscript fails to load on 10.4 - pass - - # Delete directory containing exploded ePub - if self._exploded is not None: - shutil.rmtree(self._exploded, ignore_errors=True) - for x in self._preview_files: - try: - os.remove(x) - except: - pass - - def display_exploded(self): - ''' - Generic subprocess launch of native file browser - User can use right-click to 'Open with ...' - ''' - open_local_file(self._exploded) - - def explode(self, *args): - if self._exploded is None: - self._exploded = PersistentTemporaryDirectory("_exploded", prefix='') - zipextract(self._epub, self._exploded) - self.display_exploded() - self.rebuild_button.setEnabled(True) - self.explode_button.setEnabled(False) - - def do_rebuild(self, src): - with ZipFile(src, 'w', compression=ZIP_DEFLATED) as zf: - # Write mimetype - mt = os.path.join(self._exploded, 'mimetype') - if os.path.exists(mt): - zf.write(mt, 'mimetype', compress_type=ZIP_STORED) - # Write everything else - exclude_files = ['.DS_Store','mimetype','iTunesMetadata.plist',self.rebuilt_name] - for root, dirs, files in os.walk(self._exploded): - for fn in files: - if fn in exclude_files: - continue - absfn = os.path.join(root, fn) - zfn = os.path.relpath(absfn, - self._exploded).replace(os.sep, '/') - zf.write(absfn, zfn) - - def preview(self): - if not self._exploded: - msg = _('You must first explode the %s before previewing.') - msg = msg%('HTMLZ' if self.ishtmlz else 'ePub') - return error_dialog(self, _('Cannot preview'), msg, show=True) - - tf = PersistentTemporaryFile('.htmlz' if self.ishtmlz else '.epub') - tf.close() - self._preview_files.append(tf.name) - - self.do_rebuild(tf.name) - - self.gui.iactions['View']._view_file(tf.name) - - def rebuild(self, *args): - self._output = os.path.join(self._exploded, self.rebuilt_name) - self.do_rebuild(self._output) - return QDialog.accept(self) - diff --git a/src/calibre/gui2/dialogs/tweak_epub.ui b/src/calibre/gui2/dialogs/tweak_epub.ui deleted file mode 100644 index 9f14a1b275..0000000000 --- a/src/calibre/gui2/dialogs/tweak_epub.ui +++ /dev/null @@ -1,107 +0,0 @@ - - - Dialog - - - Qt::NonModal - - - - 0 - 0 - 382 - 265 - - - - Tweak {0} - - - false - - - false - - - - - - <p>Explode the {0} to display contents in a file browser window. To tweak individual files, right-click, then 'Open with...' your editor of choice. When tweaks are complete, close the file browser window <b>and the editor windows you used to edit files in the ePub</b>.</p><p>Rebuild the ePub, updating your calibre library.</p> - - - true - - - - - - - Display contents of exploded {0} - - - Display contents of exploded {0} - - - &Explode {0} - - - - :/images/wizard.png:/images/wizard.png - - - - - - - Discard changes - - - Discard changes - - - &Cancel - - - - :/images/window-close.png:/images/window-close.png - - - - - - - false - - - Rebuild {0} from exploded contents - - - Rebuild {0} from exploded contents - - - &Rebuild {0} - - - - :/images/exec.png:/images/exec.png - - - - - - - &Preview {0} - - - - :/images/view.png:/images/view.png - - - - - - - - - - diff --git a/src/calibre/gui2/dialogs/user_profiles.py b/src/calibre/gui2/dialogs/user_profiles.py index b81b5271bc..5240a4c4f6 100644 --- a/src/calibre/gui2/dialogs/user_profiles.py +++ b/src/calibre/gui2/dialogs/user_profiles.py @@ -108,6 +108,9 @@ class UserProfiles(ResizableDialog, Ui_Dialog): def show_recipe_files(self, *args): bdir = os.path.dirname(custom_recipes.file_path) + if not os.path.exists(bdir): + return error_dialog(self, _('No recipes'), + _('No custom recipes created.'), show=True) open_local_file(bdir) def break_cycles(self): diff --git a/src/calibre/gui2/jobs.py b/src/calibre/gui2/jobs.py index 8c1b5388d7..c0d61332ab 100644 --- a/src/calibre/gui2/jobs.py +++ b/src/calibre/gui2/jobs.py @@ -402,7 +402,8 @@ class DetailView(QDialog, Ui_Dialog): # {{{ self.setupUi(self) self.setWindowTitle(job.description) self.job = job - self.html_view = hasattr(job, 'html_details') + self.html_view = (hasattr(job, 'html_details') and not getattr(job, + 'ignore_html_details', False)) if self.html_view: self.log.setVisible(False) else: diff --git a/src/calibre/gui2/metadata/bulk_download.py b/src/calibre/gui2/metadata/bulk_download.py index 976dfad2bb..9c56b5b0f8 100644 --- a/src/calibre/gui2/metadata/bulk_download.py +++ b/src/calibre/gui2/metadata/bulk_download.py @@ -7,22 +7,42 @@ __license__ = 'GPL v3' __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' +import os, time, shutil from functools import partial -from itertools import izip -from threading import Event +from threading import Thread from PyQt4.Qt import (QIcon, QDialog, QDialogButtonBox, QLabel, QGridLayout, QPixmap, Qt) from calibre.gui2.threaded_jobs import ThreadedJob -from calibre.ebooks.metadata.sources.identify import identify, msprefs -from calibre.ebooks.metadata.sources.covers import download_cover -from calibre.ebooks.metadata.book.base import Metadata -from calibre.customize.ui import metadata_plugins -from calibre.ptempfile import PersistentTemporaryFile -from calibre.utils.date import as_utc +from calibre.ebooks.metadata.opf2 import metadata_to_opf +from calibre.utils.ipc.simple_worker import fork_job, WorkerError +from calibre.ptempfile import (PersistentTemporaryDirectory, + PersistentTemporaryFile) # Start download {{{ + +class Job(ThreadedJob): + + ignore_html_details = True + + def consolidate_log(self): + self.consolidated_log = self.log.plain_text + self.log = None + + def read_consolidated_log(self): + return self.consolidated_log + + @property + def details(self): + if self.consolidated_log is None: + return self.log.plain_text + return self.read_consolidated_log() + + @property + def log_file(self): + return open(self.download_debug_log, 'rb') + def show_config(gui, parent): from calibre.gui2.preferences import show_config_widget show_config_widget('Sharing', 'Metadata download', parent=parent, @@ -104,19 +124,22 @@ def start_download(gui, ids, callback, ensure_fields=None): d.b.clicked.disconnect() if ret != d.Accepted: return + tf = PersistentTemporaryFile('_metadata_bulk.log') + tf.close() - for batch in split_jobs(ids): - job = ThreadedJob('metadata bulk download', - _('Download metadata for %d books')%len(batch), - download, (batch, gui.current_db, d.identify, d.covers, - ensure_fields), {}, callback) - gui.job_manager.run_threaded_job(job) + job = Job('metadata bulk download', + _('Download metadata for %d books')%len(ids), + download, (ids, tf.name, gui.current_db, d.identify, d.covers, + ensure_fields), {}, callback) + job.download_debug_log = tf.name + gui.job_manager.run_threaded_job(job) gui.status_bar.show_message(_('Metadata download started'), 3000) # }}} def get_job_details(job): - id_map, failed_ids, failed_covers, title_map, all_failed = job.result + (aborted, good_ids, tdir, log_file, failed_ids, failed_covers, title_map, + lm_map, all_failed) = job.result det_msg = [] for i in failed_ids | failed_covers: title = title_map[i] @@ -126,92 +149,118 @@ def get_job_details(job): title += (' ' + _('(Failed cover)')) det_msg.append(title) det_msg = '\n'.join(det_msg) - return id_map, failed_ids, failed_covers, all_failed, det_msg + return (aborted, good_ids, tdir, log_file, failed_ids, failed_covers, + all_failed, det_msg, lm_map) -def merge_result(oldmi, newmi, ensure_fields=None): - dummy = Metadata(_('Unknown')) - for f in msprefs['ignore_fields']: - if ':' in f or (ensure_fields and f in ensure_fields): - continue - setattr(newmi, f, getattr(dummy, f)) - fields = set() - for plugin in metadata_plugins(['identify']): - fields |= plugin.touched_fields +class HeartBeat(object): + CHECK_INTERVAL = 300 # seconds + ''' Check that the file count in tdir changes every five minutes ''' - def is_equal(x, y): - if hasattr(x, 'tzinfo'): - x = as_utc(x) - if hasattr(y, 'tzinfo'): - y = as_utc(y) - return x == y + def __init__(self, tdir): + self.tdir = tdir + self.last_count = len(os.listdir(self.tdir)) + self.last_time = time.time() - for f in fields: - # Optimize so that set_metadata does not have to do extra work later - if not f.startswith('identifier:'): - if (not newmi.is_null(f) and is_equal(getattr(newmi, f), - getattr(oldmi, f))): - setattr(newmi, f, getattr(dummy, f)) + def __call__(self): + if time.time() - self.last_time > self.CHECK_INTERVAL: + c = len(os.listdir(self.tdir)) + if c == self.last_count: + return False + self.last_count = c + self.last_time = time.time() + return True - newmi.last_modified = oldmi.last_modified +class Notifier(Thread): - return newmi + def __init__(self, notifications, title_map, tdir, total): + Thread.__init__(self) + self.daemon = True + self.notifications, self.title_map = notifications, title_map + self.tdir, self.total = tdir, total + self.seen = set() + self.keep_going = True -def download(ids, db, do_identify, covers, ensure_fields, + def run(self): + while self.keep_going: + try: + names = os.listdir(self.tdir) + except: + pass + else: + for x in names: + if x.endswith('.log'): + try: + book_id = int(x.partition('.')[0]) + except: + continue + if book_id not in self.seen and book_id in self.title_map: + self.seen.add(book_id) + self.notifications.put(( + float(len(self.seen))/self.total, + _('Processed %s')%self.title_map[book_id])) + time.sleep(1) + +def download(all_ids, tf, db, do_identify, covers, ensure_fields, log=None, abort=None, notifications=None): - ids = list(ids) - metadata = [db.get_metadata(i, index_is_id=True, get_user_categories=False) - for i in ids] + batch_size = 10 + batches = split_jobs(all_ids, batch_size=batch_size) + tdir = PersistentTemporaryDirectory('_metadata_bulk') + heartbeat = HeartBeat(tdir) + failed_ids = set() failed_covers = set() title_map = {} - ans = {} - count = 0 + lm_map = {} + ans = set() all_failed = True - ''' - # Test apply dialog - all_failed = do_identify = covers = False - ''' - for i, mi in izip(ids, metadata): - if abort.is_set(): - log.error('Aborting...') - break - title, authors, identifiers = mi.title, mi.authors, mi.identifiers - title_map[i] = title - if do_identify: - results = [] + aborted = False + count = 0 + notifier = Notifier(notifications, title_map, tdir, len(all_ids)) + notifier.start() + + try: + for ids in batches: + if abort.is_set(): + log.error('Aborting...') + break + metadata = {i:db.get_metadata(i, index_is_id=True, + get_user_categories=False) for i in ids} + for i in ids: + title_map[i] = metadata[i].title + lm_map[i] = metadata[i].last_modified + metadata = {i:metadata_to_opf(mi, default_lang='und') for i, mi in + metadata.iteritems()} try: - results = identify(log, Event(), title=title, authors=authors, - identifiers=identifiers) - except: - pass - if results: + ret = fork_job('calibre.ebooks.metadata.sources.worker', 'main', + (do_identify, covers, metadata, ensure_fields, tdir), + abort=abort, heartbeat=heartbeat, no_output=True) + except WorkerError as e: + if e.orig_tb: + raise Exception('Failed to download metadata. Original ' + 'traceback: \n\n'+e.orig_tb) + raise + count += batch_size + + fids, fcovs, allf = ret['result'] + if not allf: all_failed = False - mi = merge_result(mi, results[0], ensure_fields=ensure_fields) - identifiers = mi.identifiers - if not mi.is_null('rating'): - # set_metadata expects a rating out of 10 - mi.rating *= 2 - else: - log.error('Failed to download metadata for', title) - failed_ids.add(i) - # We don't want set_metadata operating on anything but covers - mi = merge_result(mi, mi, ensure_fields=ensure_fields) - if covers: - cdata = download_cover(log, title=title, authors=authors, - identifiers=identifiers) - if cdata is not None: - with PersistentTemporaryFile('.jpg', 'downloaded-cover-') as f: - f.write(cdata[-1]) - mi.cover = f.name - all_failed = False - else: - failed_covers.add(i) - ans[i] = mi - count += 1 - notifications.put((count/len(ids), - _('Downloaded %(num)d of %(tot)d')%dict(num=count, tot=len(ids)))) - log('Download complete, with %d failures'%len(failed_ids)) - return (ans, failed_ids, failed_covers, title_map, all_failed) - + failed_ids = failed_ids.union(fids) + failed_covers = failed_covers.union(fcovs) + ans = ans.union(set(ids) - fids) + for book_id in ids: + lp = os.path.join(tdir, '%d.log'%book_id) + if os.path.exists(lp): + with open(tf, 'ab') as dest, open(lp, 'rb') as src: + dest.write(('\n'+'#'*20 + ' Log for %s '%title_map[book_id] + + '#'*20+'\n').encode('utf-8')) + shutil.copyfileobj(src, dest) + + if abort.is_set(): + aborted = True + log('Download complete, with %d failures'%len(failed_ids)) + return (aborted, ans, tdir, tf, failed_ids, failed_covers, title_map, + lm_map, all_failed) + finally: + notifier.keep_going = False diff --git a/src/calibre/gui2/metadata/single.py b/src/calibre/gui2/metadata/single.py index 840753c706..4a36813c49 100644 --- a/src/calibre/gui2/metadata/single.py +++ b/src/calibre/gui2/metadata/single.py @@ -8,7 +8,6 @@ __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' import os, errno -from functools import partial from datetime import datetime from PyQt4.Qt import (Qt, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, @@ -66,14 +65,14 @@ class MetadataSingleDialogBase(ResizableDialog): self.next_button = QPushButton(QIcon(I('forward.png')), _('Next'), self) self.next_button.setShortcut(QKeySequence('Alt+Right')) - self.next_button.clicked.connect(partial(self.do_one, delta=1)) + self.next_button.clicked.connect(self.next_clicked) self.prev_button = QPushButton(QIcon(I('back.png')), _('Previous'), self) self.prev_button.setShortcut(QKeySequence('Alt+Left')) self.button_box.addButton(self.prev_button, self.button_box.ActionRole) self.button_box.addButton(self.next_button, self.button_box.ActionRole) - self.prev_button.clicked.connect(partial(self.do_one, delta=-1)) + self.prev_button.clicked.connect(self.prev_clicked) self.scroll_area = QScrollArea(self) self.scroll_area.setFrameShape(QScrollArea.NoFrame) @@ -161,10 +160,10 @@ class MetadataSingleDialogBase(ResizableDialog): self.manage_authors_button.clicked.connect(self.authors.manage_authors) self.series = SeriesEdit(self) - self.remove_unused_series_button = QToolButton(self) - self.remove_unused_series_button.setToolTip( - _('Remove unused series (Series that have no books)') ) - self.remove_unused_series_button.clicked.connect(self.remove_unused_series) + self.clear_series_button = QToolButton(self) + self.clear_series_button.setToolTip( + _('Clear series') ) + self.clear_series_button.clicked.connect(self.series.clear) self.series_index = SeriesIndexEdit(self, self.series) self.basic_metadata_widgets.extend([self.series, self.series_index]) @@ -198,6 +197,7 @@ class MetadataSingleDialogBase(ResizableDialog): self.basic_metadata_widgets.append(self.identifiers) self.clear_identifiers_button = QToolButton(self) self.clear_identifiers_button.setIcon(QIcon(I('trash.png'))) + self.clear_identifiers_button.setToolTip(_('Clear Ids')) self.clear_identifiers_button.clicked.connect(self.identifiers.clear) self.paste_isbn_button = QToolButton(self) self.paste_isbn_button.setToolTip('

' + @@ -303,17 +303,6 @@ class MetadataSingleDialogBase(ResizableDialog): self.title_sort.auto_generate() self.author_sort.auto_generate() - def remove_unused_series(self, *args): - self.db.remove_unused_series() - idx = self.series.current_val - self.series.clear() - self.series.initialize(self.db, self.book_id) - if idx: - for i in range(self.series.count()): - if unicode(self.series.itemText(i)) == idx: - self.series.setCurrentIndex(i) - break - def tags_editor(self, *args): self.tags.edit(self.db, self.book_id) @@ -489,6 +478,16 @@ class MetadataSingleDialogBase(ResizableDialog): self.break_cycles() return ret + def next_clicked(self): + if not self.apply_changes(): + return + self.do_one(delta=1, apply_changes=False) + + def prev_clicked(self): + if not self.apply_changes(): + return + self.do_one(delta=-1, apply_changes=False) + def do_one(self, delta=0, apply_changes=True): if apply_changes: self.apply_changes() @@ -591,7 +590,7 @@ class MetadataSingleDialog(MetadataSingleDialogBase): # {{{ sto(self.title_sort, self.authors) create_row(1, self.authors, self.deduce_author_sort_button, self.author_sort) sto(self.author_sort, self.series) - create_row(2, self.series, self.remove_unused_series_button, + create_row(2, self.series, self.clear_series_button, self.series_index, icon='trash.png') sto(self.series_index, self.swap_title_author_button) sto(self.swap_title_author_button, self.manage_authors_button) @@ -756,7 +755,7 @@ class MetadataSingleDialogAlt1(MetadataSingleDialogBase): # {{{ span=2, icon='auto_author_sort.png') create_row(3, self.author_sort, self.series) create_row(4, self.series, self.series_index, - button=self.remove_unused_series_button, icon='trash.png') + button=self.clear_series_button, icon='trash.png') create_row(5, self.series_index, self.tags) create_row(6, self.tags, self.rating, button=self.tags_editor_button) create_row(7, self.rating, self.pubdate) @@ -892,7 +891,7 @@ class MetadataSingleDialogAlt2(MetadataSingleDialogBase): # {{{ span=2, icon='auto_author_sort.png') create_row(3, self.author_sort, self.series) create_row(4, self.series, self.series_index, - button=self.remove_unused_series_button, icon='trash.png') + button=self.clear_series_button, icon='trash.png') create_row(5, self.series_index, self.tags) create_row(6, self.tags, self.rating, button=self.tags_editor_button) create_row(7, self.rating, self.pubdate) diff --git a/src/calibre/gui2/metadata/single_download.py b/src/calibre/gui2/metadata/single_download.py index eabde31015..d7932b5ff4 100644 --- a/src/calibre/gui2/metadata/single_download.py +++ b/src/calibre/gui2/metadata/single_download.py @@ -10,9 +10,11 @@ __docformat__ = 'restructuredtext en' DEBUG_DIALOG = False # Imports {{{ +import os, time from threading import Thread, Event from operator import attrgetter from Queue import Queue, Empty +from io import BytesIO from PyQt4.Qt import (QStyledItemDelegate, QTextDocument, QRectF, QIcon, Qt, QApplication, QDialog, QVBoxLayout, QLabel, QDialogButtonBox, @@ -24,16 +26,17 @@ from PyQt4.QtWebKit import QWebView from calibre.customize.ui import metadata_plugins from calibre.ebooks.metadata import authors_to_string from calibre.utils.logging import GUILog as Log -from calibre.ebooks.metadata.sources.identify import (identify, - urls_from_identifiers) +from calibre.ebooks.metadata.sources.identify import urls_from_identifiers from calibre.ebooks.metadata.book.base import Metadata +from calibre.ebooks.metadata.opf2 import OPF from calibre.gui2 import error_dialog, NONE, rating_font from calibre.utils.date import (utcnow, fromordinal, format_date, UNDEFINED_DATE, as_utc) from calibre.library.comments import comments_to_html from calibre import force_unicode from calibre.utils.config import tweaks - +from calibre.utils.ipc.simple_worker import fork_job, WorkerError +from calibre.ptempfile import TemporaryDirectory # }}} class RichTextDelegate(QStyledItemDelegate): # {{{ @@ -339,7 +342,7 @@ class Comments(QWebView): # {{{ \n" "

Napravi osnovni recept za " -"vesti dodavanjem RSS izvora.
Za većinu izvora moraćete da koristite " -"\"Napredni način rada\" da biste dalje podesili proces " -"preuzimanja.

" +"right:0px; -qt-block-indent:0; text-indent:0px;\">Направи основни рецепт за " +"вести додавањем RSS извора.
За већину извора мораћете да користите " +"\"Напредни начин рада\" да бисте даље подесили процес " +"преузимања.

" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 msgid "Recipe &title:" -msgstr "Naslov &recepta:" +msgstr "Наслов &рецепта:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:271 msgid "&Oldest article:" -msgstr "&Najstariji članak:" +msgstr "&Најстарији чланак:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:272 msgid "The oldest article to download" -msgstr "Najstariji članak koji će biti preuzet" +msgstr "Најстарији чланак који ће бити преузет." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:274 msgid "&Max. number of articles per feed:" -msgstr "&Maks. broj članaka po izvoru:" +msgstr "&Нај. број чланака по извору:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:275 msgid "Maximum number of articles to download per feed." -msgstr "Maksimalni broj članaka koji će biti preuzet po izvoru." +msgstr "Највећи број чланака који ће бити преузет по извору." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:276 msgid "Feeds in recipe" -msgstr "Izvori u receptu" +msgstr "Извори у рецепту." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:278 msgid "Remove feed from recipe" -msgstr "Ukloni izvor iz recepta" +msgstr "Уклони извор из рецепта." #: /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 "Dodaj izvor u recept" +msgstr "Додај извор у рецепт." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:282 msgid "&Feed title:" -msgstr "&Naslov izvora:" +msgstr "&Наслов извора:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:283 msgid "Feed &URL:" -msgstr "&URL izvora" +msgstr "URL до&вода:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:285 msgid "&Add feed" -msgstr "Dod&aj izvor" +msgstr "Дод&ај извор." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:286 msgid "" @@ -11416,12 +11574,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:287 msgid "Recipe source code (python)" -msgstr "Izvorni kod recepta (python)" +msgstr "Изворни код рецепта (python)" #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:51 #, python-format msgid "Download %s" -msgstr "" +msgstr "Преузми %s" #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:54 #, python-format @@ -11435,24 +11593,24 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:42 msgid "No file specified to download." -msgstr "Није одабрана архива за скидање." +msgstr "Није одабрана датотека за преузимање." #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:70 msgid "Not a support ebook format." -msgstr "" +msgstr "Није подржан формат е-књиге." #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:91 #, python-format msgid "Downloading %s" -msgstr "" +msgstr "Преузимам %s" #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:103 msgid "Downloading" -msgstr "" +msgstr "Преузимам" #: /home/kovid/work/calibre/src/calibre/gui2/ebook_download.py:107 msgid "Failed to download ebook" -msgstr "Неуспело скидање е-књиге" +msgstr "Није успело преузимање е-књиге" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:123 #, python-format @@ -11461,56 +11619,56 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:142 msgid "News:" -msgstr "Vesti:" +msgstr "Вести:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:144 #, python-format msgid "Attached is the %s periodical downloaded by calibre." -msgstr "Priključen je magazin %s koji je calibre preuzeo za vas." +msgstr "Прилог %s се периодично преузима за calibre." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:199 msgid "E-book:" -msgstr "E-knjiga:" +msgstr "Е-књига:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:207 msgid "Attached, you will find the e-book" -msgstr "E-knjigu ćete pronaći priključenu uz ovu poruku" +msgstr "Е-књигу ћете пронаћи прикључену уз ову поруку." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:200 msgid "by" -msgstr "od" +msgstr "од" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:209 #, python-format msgid "in the %s format." -msgstr "u formatu %s." +msgstr "у формату %s." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:223 msgid "Sending email to" -msgstr "Šaljem poruku za" +msgstr "Шаљем поруку за." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:254 msgid "Auto convert the following books before sending via email?" -msgstr "Automatski konvertuj ove knjige pre slanja elektronskom poštom?" +msgstr "Аутоматски претвори ове књиге пре слања електронском поштом?" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:261 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" -"Nisam uspeo da pošaljem ove knjige, jer nisu pronađeni odgovarajući formati:" +"Нисам успео да пошаљем ове књиге, јер нису пронађени одговарајући формати:" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:267 msgid "Failed to email book" -msgstr "Nisam uspeo da pošaljem knjigu elektronskom poštom" +msgstr "Нисам успео да пошаљем књигу електронском поштом." #: /home/kovid/work/calibre/src/calibre/gui2/email.py:270 msgid "sent" -msgstr "poslato" +msgstr "послато" #: /home/kovid/work/calibre/src/calibre/gui2/email.py:296 msgid "Sent news to" -msgstr "Poslao vesti za" +msgstr "Послао вести за." #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:129 msgid "" @@ -11527,15 +11685,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:133 msgid "Regular &expression" -msgstr "Regularni &izraz" +msgstr "Регуларни &израз" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:135 msgid "File &name:" -msgstr "&Ime fajla:" +msgstr "&Име датотеке:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:137 msgid "Title:" -msgstr "Naslov:" +msgstr "Наслов:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:138 msgid "Regular expression (?P)" @@ -11554,31 +11712,31 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:141 msgid "No match" -msgstr "Ništa nije pronađeno" +msgstr "Без резултата" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:140 msgid "Authors:" -msgstr "Autor:" +msgstr "Аутори:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:141 msgid "Regular expression (?P<author>)" -msgstr "Regularni izraz(?P<autor>)" +msgstr "Регуларни израз (?P<аутор>)" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:143 msgid "Series:" -msgstr "Serija:" +msgstr "Серија:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:144 msgid "Regular expression (?P<series>)" -msgstr "Regularni izraz (?P<serija>)" +msgstr "Регуларни израз (?P<серија>)" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:146 msgid "Series index:" -msgstr "Broj u seriji:" +msgstr "Број у серији:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:147 msgid "Regular expression (?P<series_index>)" -msgstr "Regularni izraz (?P<broj_u_seriji>)" +msgstr "Регуларни израз (?P<број_у_серији>)" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1303 @@ -11587,7 +11745,7 @@ msgstr "ISBN:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:150 msgid "Regular expression (?P<isbn>)" -msgstr "Regularni izraz (?P<isbn>)" +msgstr "Регуларни израз (?P<isbn>)" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:152 msgid "Publisher:" @@ -11599,7 +11757,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:155 msgid "Published:" -msgstr "" +msgstr "Објављено:" #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:156 msgid "Regular expression (?P<published>)" @@ -11608,7 +11766,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:276 msgid "Cover Browser" -msgstr "Izlog omota" +msgstr "Излог омота." #: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 msgid "Shift+Alt+B" @@ -11617,7 +11775,7 @@ msgstr "Shift+Alt+B" #: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:271 msgid "Tag Browser" -msgstr "Izlog etiketa" +msgstr "Излог етикета." #: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 msgid "Shift+Alt+T" @@ -11626,22 +11784,22 @@ msgstr "Shift+Alt+T" #: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" -msgstr "verzija" +msgstr "издање" #: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" -msgstr "kreirao Kovid Goyal" +msgstr "направио Kovid Goyal" #: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 msgid "Connected " -msgstr "Priključen je " +msgstr "Прикључен је. " #: /home/kovid/work/calibre/src/calibre/gui2/init.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/init.py:226 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:247 msgid "Book Details" -msgstr "Podaci o knjizi" +msgstr "Подаци о књизи." #: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 @@ -11650,31 +11808,31 @@ msgstr "Shift+Alt+D" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:67 msgid "Job" -msgstr "Posao" +msgstr "Посао" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:69 msgid "Progress" -msgstr "Pokazatelj napretka" +msgstr "Напредак" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:70 msgid "Running time" -msgstr "Vreme izvršavanja" +msgstr "Време извршавања." #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:82 #, python-format msgid "There are %d running jobs:" -msgstr "Ima %d aktivnih poslova" +msgstr "Има %d активних послова" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:108 msgid "Unknown job" -msgstr "Nepoznat posao" +msgstr "Непознат посао." #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:89 #, python-format msgid "There are %d waiting jobs:" -msgstr "Ima %d poslova na čekanju:" +msgstr "Има %d послова на чекању:" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:274 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:277 @@ -11682,7 +11840,7 @@ msgstr "Ima %d poslova na čekanju:" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:288 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:295 msgid "Cannot kill job" -msgstr "Ne mogu da prekinem posao" +msgstr "Не могу да прекинем посао." #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:275 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:289 @@ -11691,7 +11849,7 @@ msgstr "Ne mogu da prekinem posao koji komunicira sa uređajem" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:278 msgid "Job has already run" -msgstr "Posao je već završen" +msgstr "Посао је већ завршен." #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:281 msgid "This job cannot be stopped" @@ -11705,63 +11863,64 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:394 msgid "Unavailable" -msgstr "Nedostupan" +msgstr "Недоступан" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" -msgstr "Poslovi:" +msgstr "Послови:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "Shift+Alt+J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" -msgstr "Kliknite da vidite spisak poslova" +msgstr "Кликните да видите списак послова." -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" -msgstr " - Poslova" +msgstr " - Послови" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" +msgstr "Претрага за послом по имену" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 -msgid "No job selected" -msgstr "" +msgid "No job" +msgstr "Без посла" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 +msgid "No job selected" +msgstr "Није изабран посао" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Да ли заиста желите да прекинете изабрани посао" +msgstr[1] "Да ли заиста желите да прекинете изабрана посла" +msgstr[2] "Да ли заиста желите да прекинете изабраних посалова" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" -msgstr "" +msgstr "Да ли заиста желите да престану сви без- уређаја послови?" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:365 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:86 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:204 msgid "Custom" -msgstr "Po meri" +msgstr "Прилагођено" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:372 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:81 msgid "&Alternate shortcut:" -msgstr "&Alternativna prečica:" +msgstr "&Алтернативна пречица:" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:372 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:76 msgid "&Shortcut:" -msgstr "&Prečica:" +msgstr "&Пречица:" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:406 @@ -11777,12 +11936,12 @@ msgstr "&Prečica:" #: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:113 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:368 msgid "None" -msgstr "Nema" +msgstr "Ништа" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:389 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:166 msgid "Done" -msgstr "Gotovo" +msgstr "Готово" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:411 #, python-format @@ -11792,25 +11951,25 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:430 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:59 msgid "Press a key..." -msgstr "Pritisni dirku..." +msgstr "Притисни тастер..." #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:457 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:80 msgid "Already assigned" -msgstr "Već dodeljeno" +msgstr "Већ додељено" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:459 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:82 msgid "already assigned to" -msgstr "već dodeljeno za" +msgstr "већ додељено за" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:499 msgid "<b>This shortcut no longer exists</b>" -msgstr "" +msgstr "<b>Ова пречица више не постоји</b>" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:508 msgid "Shortcuts" -msgstr "" +msgstr "Пречице" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:592 msgid "" @@ -11819,57 +11978,57 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:607 msgid "Search for a shortcut by name" -msgstr "" +msgstr "Трагање за пречицом по имену" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:646 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:247 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:411 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search.py:337 msgid "No matches" -msgstr "" +msgstr "Нема резултата" #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:647 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:412 #, python-format msgid "Could not find any shortcuts matching %s" -msgstr "" +msgstr "Није могуће пронаћи одговарајуће пречице %s" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:58 msgid "Eject this device" -msgstr "Isključi ovaj uređaj" +msgstr "Искључи овај уређај." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:61 msgid "Configure this device" -msgstr "" +msgstr "Подеси овај уређај" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:74 msgid "Show books in calibre library" -msgstr "Prikaži knjige u calibre biblioteci" +msgstr "Прикажи књиге у calibre библиотеци." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:76 msgid "Show books in the main memory of the device" -msgstr "Prikaži knjige u osnovnoj memoriji uređaja" +msgstr "Прикажи књиге у основној меморији уређаја." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:78 msgid "Show books in storage card A" -msgstr "Prikaži knjige na memorijskoj kartici A" +msgstr "Прикажи књиге на меморијској картици А." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:80 msgid "Show books in storage card B" -msgstr "Prikaži knjige na memorijskoj kartici B" +msgstr "Прикажи књиге на меморијској картици B." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:94 msgid "Delete library" -msgstr "Izbriši biblioteku" +msgstr "Избриши библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:148 msgid "available" -msgstr "dostupno" +msgstr "доступно" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:197 msgid "Advanced search" -msgstr "Napredna pretraga" +msgstr "Напредна претрага." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:192 msgid "Shift+Ctrl+F" @@ -11880,29 +12039,29 @@ msgid "" "<p>Search the list of books by title, author, publisher, tags, comments, " "etc.<br><br>Words separated by spaces are ANDed" msgstr "" -"<p>Pretraži spisak knjiga po naslovu, autoru, izdavaču, etiketama, " -"komentarima, itd.<br><br>Reči razdovjene razmacima moraju SVE biti prisutne" +"<p>Претражи списак књига по наслову, аутору, издавачу, етикетама, " +"коментарима, итд.<br><br>Речи раздвојене размацима морају СВЕ бити присутне." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:208 msgid "&Go!" -msgstr "&Traži!" +msgstr "&Тражи!" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:214 msgid "Do Quick Search (you can also press the Enter key)" -msgstr "Izvedi brzo pretraživanje (možete i samo pritisnuti Enter)" +msgstr "Изведи брзо претраживање (можете и само притиснути Enter)" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:220 msgid "Reset Quick Search" -msgstr "Poništi brzu pretragu" +msgstr "Поништи брзу претрагу." #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:236 msgid "Copy current search text (instead of search name)" -msgstr "Kopirajte tekst koji se trenutno traži (umesto imena pretrage)" +msgstr "Копирајте текст који се тренутно тражи (уместо имена претраге)" #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1073 msgid "stars" -msgstr "" +msgstr "звездице" #: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:388 msgid "Y" @@ -11911,209 +12070,211 @@ msgstr "Y" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:59 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:285 msgid "On Device" -msgstr "Na uređaju" +msgstr "На уређају." #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:61 msgid "Size (MB)" -msgstr "Veličina (MB)" +msgstr "Величина (МБ)" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:68 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:275 msgid "Modified" -msgstr "" +msgstr "Измењено" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" -msgstr "Ime za pretragu je \"{0}\"" +msgstr "Име за претрагу је \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" -msgstr "UUID ove knjige je \"{0}\"" - -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 -msgid "Permission denied" -msgstr "Dozvola uskraćena" +msgstr "UUID ове књиге је \"{0}\"" #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 +msgid "Permission denied" +msgstr "Забрањен приступ" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 -msgid "Failed to set data" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +msgid "Failed to set data" +msgstr "Нисам успео да поставим податке" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" +"Није могуће поставити податке, кликните на Прикажи детаље да бисте видели " +"зашто." -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" -msgstr "U biblioteci" +msgstr "У библиотеци." -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" -msgstr "Veličina" +msgstr "Величина" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" -msgstr "Izabrano za brisanje" +msgstr "Изабрано за брисање." -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" -msgstr "Kliknite dva puta da me <b>promenite</b><br><br>" +msgstr "Кликните два пута да ме <b>промените</b><br><br>" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:187 #, python-format msgid "Hide column %s" -msgstr "Sakrij kolonu %s" +msgstr "Сакриј стубац %s" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:192 #, python-format msgid "Sort on %s" -msgstr "Sortiraj po koloni %s" +msgstr "Разврстај по стубцу %s" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:193 msgid "Ascending" -msgstr "Rastući redosled" +msgstr "Растући" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:196 msgid "Descending" -msgstr "Opadajući redosled" +msgstr "Опадајући" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:208 #, python-format msgid "Change text alignment for %s" -msgstr "Promeni poravnanje za %s" +msgstr "Промени поравнање за %s" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:210 msgid "Left" -msgstr "Levo" +msgstr "Лево" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:210 msgid "Right" -msgstr "Desno" +msgstr "Десно" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:211 msgid "Center" -msgstr "Centrirano" +msgstr "Средина" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:230 msgid "Show column" -msgstr "Prikaži kolonu" +msgstr "Прикажи стубац" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:242 msgid "Shrink column if it is too wide to fit" -msgstr "" +msgstr "Скупи колону уколико је преширока да стане" #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:245 msgid "Restore default layout" -msgstr "Vrati podrazumevani izgled" +msgstr "Врати подразумевани изглед." -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." msgstr "" -"Nije moguće preneti knjigu direktno na uređaj. Prvo je dodajte u calibre " -"biblioteku." +"Није могуће пренети књигу директно на уређај. Прво је додајте у calibre " +"библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:52 msgid "Configure Viewer" -msgstr "Podesi čitač" +msgstr "Подеси читач." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:53 msgid "Use white background" -msgstr "Koristi belu pozadinu" +msgstr "Користи белу позадину." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:54 msgid "Hyphenate" -msgstr "Hifeniraj" +msgstr "Споји цртицом" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:55 msgid "<b>Changes will only take effect after a restart.</b>" msgstr "" -"<b>Izmene će biti aktivirane tek posle ponovnog pokretanja programa.</b>" +"<b>Измене ће бити активиране тек после поновног покретања програма.</b>" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:70 msgid " - LRF Viewer" -msgstr " - LRF čitač" +msgstr " - LRF читач." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 #, python-format msgid "<b>No matches</b> for the search phrase <i>%s</i> were found." -msgstr "<b>Ništa nije pronađeno</b> za upit <i>%s</i>." +msgstr "<b>Ништа није пронађено</b> за уптит <i>%s</i>." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:128 msgid "LRF Viewer" -msgstr "LRF čitač" +msgstr "LRF читач." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:129 msgid "Parsing LRF file" -msgstr "Obrađujem LRF fajl" +msgstr "Обрађујем LRF датотеку" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:130 msgid "LRF Viewer toolbar" -msgstr "Traka sa alatkama za LRF čitač" +msgstr "Трака са алаткама за LRF читач." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" -msgstr "Sledeća strana" +msgstr "Следећа страница" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" -msgstr "Prethodna strana" +msgstr "Претходна страница" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" -msgstr "Nazad" +msgstr "Назад" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:134 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:194 msgid "Forward" -msgstr "Napred" +msgstr "Напред" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:135 msgid "Next match" -msgstr "Sledeći pogodak" +msgstr "Следеће подударање" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201 msgid "Open ebook" -msgstr "Otvori e-knjigu" +msgstr "Отвори е-књигу." #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:137 msgid "Configure" -msgstr "Podesi" +msgstr "Подеси" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:32 msgid "Use the library located at the specified path." -msgstr "Koristi biblioteku na navedenoj putanji." +msgstr "Користи библиотеку на наведеној путањи." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:34 msgid "Start minimized to system tray." -msgstr "Pokreni program sakriven u sistemsku ikonu." +msgstr "Покрени програм скривен у системској палети." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:36 msgid "Log debugging information to console" -msgstr "Piši izveštaje o greškama na konzolu" +msgstr "Пријави извештај о грешкама на конзоли." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:38 msgid "Do not check for updates" -msgstr "Ne proveravaj postojanje novije verzije" +msgstr "Не проверавај постојање новог издања." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:40 msgid "" @@ -12130,53 +12291,53 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:68 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:764 msgid "Calibre Library" -msgstr "Calibre biblioteka" +msgstr "Calibre библиотека." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:95 msgid "Choose a location for your calibre e-book library" -msgstr "Izaberite mesto za vašu biblioteku" +msgstr "Изаберите место за вашу библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:104 msgid "Failed to create library" -msgstr "Nisam uspeo da napravim biblioteku" +msgstr "Нисам успео да направим библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:105 #, python-format msgid "Failed to create calibre library at: %r." -msgstr "Nisam uspeo da napravim biblioteku na: %r." +msgstr "Нисам успео да направим библиотеку на: %r." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:170 msgid "Choose a location for your new calibre e-book library" -msgstr "Izaberite mesto za vašu novu calibre biblioteku" +msgstr "Изаберите место за вашу нову calibre библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:136 msgid "Initializing user interface..." -msgstr "Pokrećem korisnički interfejs..." +msgstr "Покрећем корисничко сучеље..." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:164 msgid "Repairing failed" -msgstr "Popravka neuspela" +msgstr "Није успела поправка" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:165 msgid "The database repair failed. Starting with a new empty library." msgstr "" -"Popravka baze podataka nije uspela. Počeću s novom, praznom, bibliotekom." +"Поправка базе података није успела. Почећу с новом, празном, библиотеком." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:179 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:204 msgid "Bad database location" -msgstr "Neispravna lokacija za bazu podataka" +msgstr "Неисправна локација за базу података." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:180 #, python-format msgid "Bad database location %r. calibre will now quit." -msgstr "Neispravno mesto za bazu podataka %r. calibre će sada prekinuti rad." +msgstr "Неисправно место за базу података %r. calibre ће сада прекинути рад." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" -msgstr "Neispravna baza podataka" +msgstr "Неисправна база података." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:193 #, python-format @@ -12191,106 +12352,106 @@ msgstr "" msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -"Neispravno mesto za bazu podataka, %r. Počeću s novom, praznom calibre " -"bibliotekom" +"Неисправно место за базу података, %r. Почећу с новом, празном calibre " +"библиотеком." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 #, python-format msgid "Starting %s: Loading books..." -msgstr "Pokrećem %s: Učitavam knjige..." +msgstr "Покрећем %s: Учитавам књиге..." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:295 msgid "If you are sure it is not running" -msgstr "Ako ste sigurni da nije pokrenut" +msgstr "Ако сте сигурни да није покренут." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:298 msgid "may be running in the system tray, in the" -msgstr "i možda je sakriven u sistemsk ikonu, u" +msgstr "и можда је скривен у системској палети, у" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:300 msgid "upper right region of the screen." -msgstr "gornjem desnom uglu ekrana." +msgstr "горњем десном углу екрана." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:302 msgid "lower right region of the screen." -msgstr "donjem desnom uglu ekrana." +msgstr "доњем десном углу екрана." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:305 msgid "try rebooting your computer." -msgstr "pokušajte da ponovo pokrenete računar." +msgstr "покушајте да поново покренете рачунар." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:307 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:321 msgid "try deleting the file" -msgstr "pokušajte da izbrišete fajl" +msgstr "покушајте да избришете датотеку" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:310 msgid "Cannot Start " -msgstr "Ne mogu da pokrenem " +msgstr "Не могу да покренем . " #: /home/kovid/work/calibre/src/calibre/gui2/main.py:311 #, python-format msgid "%s is already running." -msgstr "%s je već pokrenut." +msgstr "%s је већ покренут." #: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:25 msgid "" "Redirect console output to a dialog window (both stdout and stderr). Useful " "on windows where GUI apps do not have a output streams." msgstr "" -"Preusmeri izlaz sa konzole u prozor (i stdout i stderr). Ovo je korisno na " -"sistemima gde grafičke aplikacije nemaju kanale za ispis." +"Преусмери излаз са конзоле у прозор (i stdout i stderr). Ово је корисно на " +"системима где графичке апликације немају канале за испис." #: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:113 msgid "&Preferences" -msgstr "&Podešavanja" +msgstr "&Поставке" #: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:114 msgid "&Quit" -msgstr "&Izađi" +msgstr "&Изађи" #: /home/kovid/work/calibre/src/calibre/gui2/main_window.py:138 msgid "Unhandled exception" -msgstr "" +msgstr "Нерешив изузетак" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" -msgstr "Nisam uspeo da otvorim %s. Da li ga koristi neki drugi program?" +msgstr "Нисам успео да отворим %s. Да ли га користи неки други програм?" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:137 msgid "" "Specify how this book should be sorted when by title. For example, The " "Exorcist might be sorted as Exorcist, The." msgstr "" -"Navedite kako će ova knjiga biti sortirana po naslovu. Na primer, The " -"Exorcist može da bude sortiran kao Exorcist, The." +"Наведите како ће ова књига бити разврстана по наслову. На пример, The " +"Exorcist може да буде разврстан као Exorcist, The." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:139 msgid "Title &sort:" -msgstr "" +msgstr "Поређај &наслов:" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:148 msgid "" " The green color indicates that the current title sort matches the current " "title" msgstr "" -" Zečena boja označava da trenutni način sortiranja po naslovu odgovara " -"tranutnom naslovu" +" Зелена боја означава да тренутни начин разврставања по наслову одговара " +"тренутном наслову" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:151 msgid "" " The red color warns that the current title sort does not match the current " "title. No action is required if this is what you want." msgstr "" -" Crvena boja upozorava da tenutni način sortiranja po naslovu na odgovara " -"trenutnom naslovu. Ako je to ono što želite ne morate da uradite više ništa." +" Црвена боја упозорава да тенутни начин разврставања по наслову на одговара " +"тренутном наслову. Ако је то оно што желите не морате да урадите више ништа." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:225 msgid "Authors changed" -msgstr "" +msgstr "Измени ауторе" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:226 msgid "" @@ -12305,34 +12466,34 @@ msgid "" "If the box is colored green, then text matches the individual author's sort " "strings. If it is colored red, then the authors and this text do not match." msgstr "" -"Odredite kako će biti sortirani autori ove knjige. Na primer, Čarls Dikens " -"treba da se sortira kao Dikens, Čarls.\n" -"Ako je polje zeleno, tekst odgovara načinu sortiranja pojedinačnih autora. " -"Ako je polje crveno, autori ne odgovaraju ovom tekstu." +"Одредите како ће бити разврстани аутори ове књиге. На пример, Чарлс Дикенс " +"треба да се разврста као Дикенс, Чарлс. Ако је поље зелено, текст одговара " +"начину разврставања појединачних аутора. Ако је поље црвено, аутори не " +"одговарају овом тексту." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:319 msgid "Author s&ort:" -msgstr "" +msgstr "Поређај а&уторе:" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:329 msgid "" " The green color indicates that the current author sort matches the current " "author" msgstr "" -" Zelena boja označava da izabrani način sortiranja po autoru odgovara " -"trenutnom autoru" +" Зелена боја означава да изабрани начин разврставања по аутору одговара " +"тренутном аутору" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:332 msgid "" " The red color indicates that the current author sort does not match the " "current author. No action is required if this is what you want." msgstr "" -" Crvena boja označava da trenutni način sortiranja po autoru ne odgovara " -"trenutnom autoru. Ako je to ono što želite ne morate ništa više da uradite." +" Црвена боја означава да тренутни начин разврставања по аутору не одговара " +"тренутном аутору. Ако је то оно што желите не морате ништа више да урадите." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:518 msgid "&Number:" -msgstr "" +msgstr "&Број:" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:618 #, python-format @@ -12341,6 +12502,9 @@ msgid "" "\n" "Double click to view" msgstr "" +"Последња измена: %s\n" +"\n" +"Двоклик за приказ" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:628 #, python-format @@ -12349,7 +12513,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:674 msgid "Set the cover for the book from the selected format" -msgstr "Postavi naslovnu stranu za knjigu iz izabranog formata" +msgstr "Постави насловну страну за књигу из изабраног формата." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:682 msgid "Set metadata for the book from the selected format" @@ -12361,61 +12525,57 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:696 msgid "Remove the selected format from this book" -msgstr "" +msgstr "Уклоните изабрани формат из ове књиге" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:767 msgid "Choose formats for " -msgstr "Izaberi formate za " +msgstr "Изабери формате за ... " #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:810 msgid "You do not have permission to read the following files:" -msgstr "Nemate dozvolu da čitate sledeće fajlove:" +msgstr "Немате дозволу да читате следеће датотеке:" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:840 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:841 msgid "No format selected" -msgstr "Nije izabran nijedan format" +msgstr "Није изабран ниједан формат." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:853 msgid "Could not read metadata" -msgstr "Ne mogu da pročitam metapodatke" +msgstr "Не могу да прочитам метаподатке." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:854 #, python-format msgid "Could not read metadata from %s format" -msgstr "Ne mogu da pročitam metapodatke iz formata %s" +msgstr "Не могу да прочитам метаподатке из формата %s" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:882 msgid "&Browse" -msgstr "&Pregledaj" +msgstr "&Прегледај" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:884 msgid "T&rim" -msgstr "Sk&rati" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "U&kloni" +msgstr "Ск&рати" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" -msgstr "Preuzmi &omot" +msgstr "Преузми &корице" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:893 msgid "&Generate cover" -msgstr "&Napravi omot" +msgstr "&Направи корице" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:943 msgid "Not a valid picture" -msgstr "Neispravna slika" +msgstr "Неисправна слика." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:967 msgid "Specify title and author" -msgstr "Navedite naslov i autora" +msgstr "Наведите наслов и аутора." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:968 msgid "You must specify a title and author before generating a cover" -msgstr "Morate navesti naslov i autora pre nego što napravite omot" +msgstr "Морате навести наслов и аутора пре него што направите корице." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:987 msgid "Invalid cover" @@ -12423,20 +12583,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 msgid "Could not change cover as the image is invalid." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" +msgstr "Није могуће променити корице слика је неважећа." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" -msgstr "Etikete su promenjene" +msgstr "Етикете су промењене." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1143 msgid "" @@ -12446,22 +12597,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1171 msgid "A comma separated list of languages for this book" -msgstr "" +msgstr "Зарезом одвоји листу језика за ове књиге" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1194 msgid "Unknown language" -msgstr "" +msgstr "Непознати језик" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1195 #, python-format msgid "The language %s is not recognized" msgid_plural "The languages %s are not recognized" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Језик %s није препознат" +msgstr[1] "Језика %s нису препозната" +msgstr[2] "Језика %s није препознато" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1207 msgid "I&ds:" -msgstr "" +msgstr "I&ds:" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1208 #, python-format @@ -12470,25 +12622,28 @@ msgid "" "\n" "%s" msgstr "" +"Уреди идентификатор за ове књиге. на пример: \n" +"\n" +"%s" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1272 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1334 msgid "This ISBN number is valid" -msgstr "Ovaj ISBN broj je ispravan" +msgstr "Овај ISBN број је исправан." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1275 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1337 msgid "This ISBN number is invalid" -msgstr "Ovaj ISBN broj je neispravan" +msgstr "Овај ISBN број је неисправан." #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1300 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1322 msgid "Invalid ISBN" -msgstr "" +msgstr "Неважећи ISBN" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1301 msgid "Enter an ISBN" -msgstr "" +msgstr "Унеси неки ISBN" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1323 msgid "The ISBN you entered is not valid. Try again." @@ -12496,113 +12651,113 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1347 msgid "&Publisher:" -msgstr "" +msgstr "Из&давач:" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1416 msgid "Clear date" -msgstr "" +msgstr "Очисти датум" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1450 msgid "Publishe&d:" -msgstr "Iz&dato:" +msgstr "Из&дато:" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" -msgstr "" +msgstr "Распоред преузимања?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" -msgstr "" +msgstr "&Конфигурисање преузимања" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" -msgstr "" +msgstr "Преузми &оба" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" -msgstr "" +msgstr "Преузми метаподатке за %d књиге" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" -msgstr "" +msgstr "Почело је преузимање метаподатака" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" -msgstr "" +msgstr "(Непотпуни метаподаци)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" -msgstr "" +msgstr "(Непотпуне корице)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" -msgstr "" +msgid "Processed %s" +msgstr "Обрађено %s" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:61 msgid "Downloaded metadata fields" -msgstr "" +msgstr "Преузми метаподатке" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" -msgstr "" +msgstr "Уреди метаподатке" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" -msgstr "Sledeći" +msgstr "Следеће" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" -msgstr "Prethodni" +msgstr "Претходно" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -"Automatski kreiraj način sortiranja po naslovu na osnovu trenutno izabranog " -"naslova.\n" -"Korišćenje ovog dugmeta da se odredit način sortiranja po naslovu će " -"promeniti boju iz crvene u zelenu." +"Аутоматски направи начин разврставања по наслову на основу тренутно " +"изабраног наслова.\n" +"Коришћење овог дугмета да се одреди начин разврставања по наслову ће " +"променити боју из црвене у зелену." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -12610,35 +12765,39 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" -msgstr "" +msgstr "Постави ауторе разврстане из аутора" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" -msgstr "" +msgstr "Постави ауторе из разврстаних аутора" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" -msgstr "" +msgstr "Умножи ауторе у разврстане ауторе" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" -msgstr "" +msgstr "Умножи разврстане ауторе у ауторе" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" -msgstr "Zameni autore i naslov" +msgstr "Замени ауторе и наслов." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" -msgstr "Ukloni neiskorišćene serije (serije koje ne sadrže nijednu knjigu)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "Очисти серије" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" +msgstr "Очисти Id-ове" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 msgid "" @@ -12648,81 +12807,81 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:217 msgid "&Download metadata" -msgstr "" +msgstr "&Преузми метаподатке" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:229 msgid "Configure download metadata" -msgstr "" +msgstr "Подеси преузете метаподатке" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:233 msgid "Change how calibre downloads metadata" -msgstr "" +msgstr "Промена преузимања метаподатака calibre" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:295 #, python-format msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" -msgstr "Ne mogu da pročitam naslovnu stranu" +msgstr "Не могу да прочитам насловну страну." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" -msgstr "Nisam uspeo da pročitam naslovnu stranu iz formata %s" +msgstr "Нисам успео да прочитам насловну страну из формата %s" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" -msgstr "Naslovna strana u formatu %s je neispravna" +msgstr "Насловна страна у формату %s је неисправна." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" -msgstr "Sačuvaj izmene i promeni metapodatke za %s" +msgstr "Сачувај измене и промени метаподатке за %s" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" -msgstr "" +msgstr "Промени корице" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" -msgstr "" +msgstr "Ко&ментари" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" -msgstr "" +msgstr "&Метаподаци" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" -msgstr "" +msgstr "&Корице и формати" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" -msgstr "" +msgstr "П&рилагођени метаподаци" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" -msgstr "&Komentari" +msgstr "&Напомене" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" -msgstr "" +msgstr "Основни метаподаци" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" -msgstr "" +msgstr "Има корице" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" -msgstr "" +msgstr "Има преглед" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12730,27 +12889,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" -msgstr "" +msgstr "Погледајте на" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " -msgstr "" +msgstr "calibre преузима метаподатке из: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" -msgstr "" +msgstr "Сачекајте" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " -msgstr "" +msgstr "Питање: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12758,126 +12917,126 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" -msgstr "" +msgstr "Тренутне корице" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." -msgstr "" +msgstr "Претражујем..." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." -msgstr "" +msgstr "Преузимање метаподатака..." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." -msgstr "Preuzimam naslovnu stranu..." +msgstr "Преузимам насловну страну..." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/__init__.py:37 msgid "" "Restore settings to default values. You have to click Apply to actually save " "the default settings." msgstr "" -"Vratite podešavanja na podrazumevane vrednosti. Morate da kliknete na " -"Primeni da bi ih zaista i sačuvali." +"Вратите подешавања на подразумеване вредности. Морате да кликнете на Примени " +"да би их заиста и сачували." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/__init__.py:328 msgid "Configure " -msgstr "" +msgstr "Подесите " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:32 msgid "Ignore duplicate incoming formats" -msgstr "" +msgstr "Занемари дупликате долазних формата" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:33 msgid "Overwrite existing duplicate formats" -msgstr "" +msgstr "Замени дуплиране постојеће формате" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:34 msgid "Create new record for each duplicate format" -msgstr "" +msgstr "Направи нови запис за сваки дуплирани формат" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 -msgid "Invalid folder" -msgstr "" +msgstr "Одабери фасциклу" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +msgid "Invalid folder" +msgstr "Неважећа фасцикла" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -"Ovde možete kontrolisati kako calibre čita metapodatke iz fajlova koje u " -"njega dodajete. Ovi podaci se mogu čitati ili iz sadržaja, ili iz imena " -"fajla." +"Овде можете контролисати како calibre чита метаподатке из датотека које у " +"њега додајете. Ови подаци се могу читати или из садржаја, или из имена " +"датотеке." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -"Promeni redosled imena i prezimena autora. Ovo utiče samo na metapodatke " -"pročitane iz imena fajla." +"Промени редослед имена и презимена аутора. Ово утиче само на метаподатке " +"прочитане из имена датотеке." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" -msgstr "&Promeni redosled imena i prezimena autora" +msgstr "&Промени редослед имена и презимена аутора." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12890,11 +13049,12 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" +"&Аутоматски обједини додате књиге, ако већ постоје у библиотеци calibre:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12914,51 +13074,27 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" -msgstr "" +msgstr "&Примените ознаке приликом додавања књиге:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -"Zarezima razdvojena lista etiketa koje će biti primenjene na knjige dodate u " -"biblioteku" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 -msgid "&Configure metadata from file name" -msgstr "&Podesi metapodatke pročitane iz imena fajla" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 -msgid "The Add &Process" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" +"Зарезима раздвојена листа етикета које ће бити примењене на књиге додате у " +"библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" +msgid "&Configure metadata from file name" +msgstr "&Подеси метаподатке прочитане из имена датотеке" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" +msgid "The Add &Process" +msgstr "Поступак &додавања" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12966,36 +13102,64 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" +msgstr "Провери да ли постоје &дупликати када се аутоматски додају датотеке" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 -msgid "&Automatic Adding" +msgid "Folder to auto-add files from" +msgstr "Фасцикла за аутоматско додавање датотека из" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "Преглед фасцикли" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 +msgid "&Automatic Adding" +msgstr "&Аутоматско додавање" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:159 msgid "High" -msgstr "Visok" +msgstr "Висок" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:160 msgid "Low" -msgstr "Nizak" +msgstr "Низак" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:36 msgid "Very low" -msgstr "" +msgstr "Веома низак" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:64 msgid "Compact Metadata" -msgstr "" +msgstr "Сажети метаподаци" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:64 msgid "Default" -msgstr "Podrazumevana" +msgstr "Подразумевано" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:65 msgid "All on 1 tab" @@ -13003,11 +13167,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior.py:167 msgid "Confirmation dialogs have all been reset" -msgstr "Sva pitanja za potvrdu su omogućena" +msgstr "Сва питања за потврду су омогућена." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:147 msgid "Show notification when &new version is available" -msgstr "Prikaži poruku ako postoji &nova verzija programa" +msgstr "Прикажи поруку ако постоји &нова верзија програма." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:148 msgid "" @@ -13017,43 +13181,43 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:150 msgid "Yes/No columns have three values (Requires restart)" -msgstr "" +msgstr "Да/Не колоне имају три вредности (Захтева препокретање)" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:151 msgid "Automatically send downloaded &news to ebook reader" -msgstr "Automatski pošalji preuzete &vesti na čitač" +msgstr "Аутоматски пошаљи преузете &вести на читач" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:152 msgid "&Delete news from library when it is automatically sent to reader" -msgstr "&Izbriši vesti iz biblioteke kada budu automatski poslate na čitač" +msgstr "&Избриши вести из библиотеке када буду аутоматски послате на читач." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:153 msgid "Preferred &output format:" -msgstr "Poželjni izlazni f&ormat:" +msgstr "Пожељни излазни ф&ормат:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:154 msgid "Default network &timeout:" -msgstr "Podrazumevana vrednost za čekanje na odziv &mreže:" +msgstr "Подразумевана вредност за чекање на одзив &мреже:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:155 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" msgstr "" -"Postavi podrazumevanu vrednost za čekanje na odziv mreže (t.j. pristup " -"Internetu radi preuzimanja podataka)" +"Постави подразумевану вредност за чекање на одзив мреже (т.ј. приступ " +"Интернету ради преузимања података)" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:156 msgid " seconds" -msgstr " sekundi" +msgstr " секунде" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:157 msgid "Job &priority:" -msgstr "&Prioritet posla:" +msgstr "&Приоритет посла:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:161 msgid "Restriction to apply when the current library is opened:" -msgstr "Ograničenja koja treba primeniti pri otvaranju ove biblioteke:" +msgstr "Ограничења која треба применити при отварању ове библиотеке:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:162 msgid "" @@ -13061,9 +13225,9 @@ msgid "" "used. Also applied when switching to this library. Note that this setting is " "per library. " msgstr "" -"Primeni ovo ograničenje pri pokretanju calibrea ako se koristi ova " -"bilbioteka. Ovo ograničenje će biti primenjeno i pri promeni biblioteke. Ovo " -"podešavanje je vezano za biblioteku. " +"Примени ово ограничење при покретању цалибре-а ако се користи ова " +"библиотека. Ово ограничење ће бити примењено и при промени библиотеке. Ово " +"подешавање је везано за библиотеку. " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:163 msgid "Edit metadata (single) layout:" @@ -13077,29 +13241,29 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:165 msgid "Preferred &input format order:" -msgstr "Poželjan redosled ulazn&ih formata:" +msgstr "Пожељан редослед улазн&их формата:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:168 msgid "Use internal &viewer for:" -msgstr "Koristi &ugrađeni čitač za:" +msgstr "Користи &уграђени читач за:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:169 msgid "Reset all disabled &confirmation dialogs" -msgstr "&Omogući sva isključena pitanja za potvrdu" +msgstr "&Омогући сва искључена питања за потврду." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:27 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:32 msgid "is true" -msgstr "" +msgstr "Истина је" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:33 msgid "is false" -msgstr "" +msgstr "Нетачно је" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:29 msgid "is undefined" -msgstr "" +msgstr "Недефинисан је" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:36 msgid "has id" @@ -13107,61 +13271,61 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:37 msgid "does not have id" -msgstr "" +msgstr "нема id" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:40 msgid "is equal to" -msgstr "" +msgstr "једнако је" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:41 msgid "is less than" -msgstr "" +msgstr "је мање од" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:42 msgid "is greater than" -msgstr "" +msgstr "је веће од" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:45 msgid "has" -msgstr "" +msgstr "има" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:46 msgid "does not have" -msgstr "" +msgstr "нема" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:47 msgid "has pattern" -msgstr "" +msgstr "има шаблон" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:48 msgid "does not have pattern" -msgstr "" +msgstr "нема шаблон" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:57 msgid "is set" -msgstr "" +msgstr "подешено" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:58 msgid "is not set" -msgstr "" +msgstr "није подешено" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:53 msgid "is" -msgstr "" +msgstr "јесте" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:54 msgid "is not" -msgstr "" +msgstr "није" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:55 msgid "matches pattern" -msgstr "" +msgstr "одговара шаблон" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:56 msgid "does not match pattern" -msgstr "" +msgstr "не одговара шаблон" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:75 msgid "If the ___ column ___ values" @@ -13175,19 +13339,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:213 msgid "Enter a number" -msgstr "" +msgstr "Унесите број" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:218 msgid "Enter a date in the format YYYY-MM-DD" -msgstr "" +msgstr "Унесите датум у формату YYYY-MM-DD" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:220 msgid "Enter a string." -msgstr "" +msgstr "Унесите низ." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:222 msgid "Enter a regular expression" -msgstr "" +msgstr "Унесите прави израз" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:224 #, python-format @@ -13196,15 +13360,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:239 msgid "Create/edit a column coloring rule" -msgstr "" +msgstr "Направи/измени правила бојења колоне" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:244 msgid "Create a coloring rule by filling in the boxes below" -msgstr "" +msgstr "Стварање правила за попуњавање бојом поља испод" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:258 msgid "to" -msgstr "" +msgstr "за" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:266 msgid "Only if the following conditions are all satisfied:" @@ -13212,15 +13376,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:276 msgid "Add another condition" -msgstr "" +msgstr "Додај још један услов" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:280 msgid "You can disable a condition by blanking all of its boxes" -msgstr "" +msgstr "Можете да онемогућите стање затамњења по свим својим пољима" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:352 msgid "Invalid condition" -msgstr "" +msgstr "Неважећи услов" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:353 #, python-format @@ -13229,11 +13393,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:358 msgid "No conditions" -msgstr "" +msgstr "Нема услова" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:359 msgid "You must specify at least one non-empty condition for this rule" -msgstr "" +msgstr "Морате навести бар један услов за ово правило" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:447 #, python-format @@ -13269,15 +13433,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:491 msgid "Add Rule" -msgstr "" +msgstr "Додај правило" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:494 msgid "Remove Rule" -msgstr "" +msgstr "Уклони правило" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:511 msgid "Move the selected rule up" -msgstr "" +msgstr "Премести изабрано правило горе" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:516 msgid "Move the selected rule down" @@ -13302,16 +13466,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 msgid "You must select a column to delete it" -msgstr "Da biste izbrisali kolonu morate je prvo izabrati" +msgstr "Да бисте избрисали колону морате је прво изабрати." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 msgid "The selected column is not a custom column" -msgstr "Izabrana kolona nije korisnička kolona" +msgstr "Изабрана колона није корисничка колона." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 #, python-format msgid "Do you really want to delete column %s and all its data?" -msgstr "Da li zaista želite da izbrišete kolonu %s i njen sadržaj?" +msgstr "Да ли заиста желите да избришете колону %s и њен садржај?" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:82 @@ -13320,87 +13484,87 @@ msgid "" "book list. You can hide columns by unchecking them. You can also create your " "own, custom columns." msgstr "" -"Ovde možete promeniti raspored kolona u spisku knjiga. uklonite oznaku kraj " -"kolone da je sakrijete. Možete kreirati i kolone sa sopstvenim sadržajem." +"Овде можете променити распоред колона у списку књига. уклоните ознаку крај " +"колоне да је сакријете. Можете направити и колоне са сопственим садржајем." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:88 msgid "Move column up" -msgstr "" +msgstr "Помери колону нагоре" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:84 msgid "Remove a user-defined column" -msgstr "Ukloni korisničku kolonu" +msgstr "Уклони корисничку колону." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:92 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:86 msgid "Add a user-defined column" -msgstr "Dodaj korisničku kolonu" +msgstr "Додај корисничку колону." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:94 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:88 msgid "Edit settings of a user-defined column" -msgstr "Promeni podešavanja za korisničku kolonu" +msgstr "Промени подешавања за корисничку колону." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:96 msgid "Move column down" -msgstr "" +msgstr "Помери колону надоле" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/custom_columns_ui.py:91 msgid "Add &custom column" -msgstr "Dodaj sopstvenu &kolonu" +msgstr "Додај сопствену &колону." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion.py:41 msgid "" "Restore settings to default values. Only settings for the currently selected " "section are restored." msgstr "" -"Vrati podešavanja na podrazumevane vrednosti. Samo vrednosti u trenutno " -"izabranom odeljku će biti izmenjena." +"Врати подешавања на подразумеване вредности. Само вредности у тренутно " +"изабраном одељку ће бити измењене." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:21 msgid "Text, column shown in the tag browser" -msgstr "Tekst, kolona prikazana u izlogu etiketa" +msgstr "Текст, колона приказана у излогу етикета." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:24 msgid "Comma separated text, like tags, shown in the tag browser" -msgstr "Tekst razdvojen zarezima, kao i etikete, prikaži u izlogu etiketa" +msgstr "Текст раздвојен зарезима, као и етикете, прикажи у излогу етикета." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:27 msgid "Long text, like comments, not shown in the tag browser" -msgstr "Dugačak tekst, kao i komentari, nije prikazan u izlogu etiketa" +msgstr "Дугачак текст, као и коментари, није приказан у излогу етикета." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:30 msgid "Text column for keeping series-like information" -msgstr "Tekst kolona za prikaz informacija kao što je serija" +msgstr "Текст колона за приказ информација као што је серија." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:33 msgid "Text, but with a fixed set of permitted values" -msgstr "Tekst, ali s fiksnim skupom dozvoljenih vrednosti" +msgstr "Текст, али с фиксним скупом дозвољених вредности" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:37 msgid "Floating point numbers" -msgstr "Razlomljen broj" +msgstr "Разломљен бројеви" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:39 msgid "Integers" -msgstr "Celi brojevi" +msgstr "Цели бројеви." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:41 msgid "Ratings, shown with stars" -msgstr "Ocene, prikazane zvezdicama" +msgstr "Оцене, приказане звездицама." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:69 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:176 msgid "Yes/No" -msgstr "Da/Ne" +msgstr "Да/Не" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:46 msgid "Column built from other columns" -msgstr "Kolona sačinjena od drugih kolona" +msgstr "Колона сачињена од других колона." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:48 msgid "Column built from other columns, behaves like tags" @@ -13409,7 +13573,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:55 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:56 msgid "Create a custom column" -msgstr "" +msgstr "Направи прилагођену колону" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:67 msgid "Quick create:" @@ -13421,7 +13585,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:152 msgid "Formats" -msgstr "Formati" +msgstr "Формати" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:68 msgid "ISBN" @@ -13433,11 +13597,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:76 msgid "Number" -msgstr "Broj" +msgstr "Број" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:76 msgid "Text" -msgstr "Tekst" +msgstr "Текст" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:92 @@ -13446,15 +13610,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:96 msgid "No column selected" -msgstr "Nije izabrana nijedna kolona" +msgstr "Није изабрана колона." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:97 msgid "No column has been selected" -msgstr "Nije izabrana nijedna kolona" +msgstr "Није изабрана ниједна колона" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:101 msgid "Selected column is not a user-defined column" -msgstr "Izabrana kolona nije korisnička kolona" +msgstr "Изабрана колона није корисничка колона." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:148 msgid "" @@ -13472,7 +13636,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:177 msgid "My Tags" -msgstr "" +msgstr "Моје ознаке" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:178 msgid "My Series" @@ -13484,7 +13648,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:180 msgid "People" -msgstr "" +msgstr "Људи" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:207 msgid "" @@ -13504,45 +13668,45 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:221 msgid "No lookup name was provided" -msgstr "Nije navedeno ime za pretragu" +msgstr "Није наведено име за претрагу." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:225 msgid "" "The lookup name must contain only lower case letters, digits and " "underscores, and start with a letter" msgstr "" -"Ime za pretragu sme sadržati samo mala slova, cifre i donje crte, i mora " -"početi slovom" +"Име за претрагу сме садржати само мала слова, цифре и доње црте, и мора " +"почети словом." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:228 msgid "" "Lookup names cannot end with _index, because these names are reserved for " "the index of a series column." msgstr "" -"Imena za pretragu ne mogu završavati s _index, jer su takva imena " -"rezervisana za kolonu za serije." +"Имена за претрагу не могу завршавати с _index, јер су таква имена " +"резервисана за колону за серије." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:238 msgid "No column heading was provided" -msgstr "Nije naveden naziv kolone" +msgstr "Није наведен назив колоне." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:248 #, python-format msgid "The lookup name %s is already used" -msgstr "Ime za pretragu %s je već u upotrebi" +msgstr "Име за претрагу %s је већ у употреби." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:260 #, python-format msgid "The heading %s is already used" -msgstr "Naziv %s je već u upotrebi" +msgstr "Назив %s је већ у употреби." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:271 msgid "You must enter a template for composite columns" -msgstr "Morate uneti šablon za kompleksne kolone" +msgstr "Морате унети шаблон за комплексне колоне." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:281 msgid "You must enter at least one value for enumeration columns" -msgstr "Morate uneti bar jednu vrednost za kolone u enumeraciji" +msgstr "Морате унети бар једну вредност за набрајање колоне" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:287 msgid "" @@ -13561,23 +13725,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:220 msgid "&Lookup name" -msgstr "&Ime za pretragu" +msgstr "&Име за претрагу" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:221 msgid "Column &heading" -msgstr "&Naziv kolone" +msgstr "&Назив колоне." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:222 msgid "" "Used for searching the column. Must contain only digits and lower case " "letters." msgstr "" -"Koristi se za pretraživanje kolona. Sme da sadrži samo cifre i mala slova." +"Користи се за претраживање колона. Сме да садржи само цифре и мала слова." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:223 msgid "" "Column heading in the library view and category name in the tag browser" -msgstr "Naziv kolone u biblioteci i naziv kategorije u izlogu etiketa." +msgstr "Назив колоне у библиотеци и назив категорије у излогу етикета." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:224 msgid "&Column type" @@ -13585,7 +13749,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:225 msgid "What kind of information will be kept in the column." -msgstr "Koja vrsta informacija se čuva u koloni" +msgstr "Која врста информација се чува у колони." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:226 msgid "" @@ -13618,21 +13782,21 @@ msgid "" "<li>dd MMMM yy gives 05 January 10</li>\n" "</ul> " msgstr "" -"<p>Format za datum. Koristite 1-4 'd'a za dan, 1-4 'M'a za mesec, i 2 do 4 " -"'y'a za godinu.</p>\n" -"<p>Na primer:\n" +"<p>Формат за датум. Користите 1-4 'd'а за дан, 1-4 'M'а за месец, i 2 до 4 " +"'y'а за годину.</p>\n" +"<p>На пример:\n" "<ul>\n" -"<li> ddd, d MMM yyyy daje Pon, 5 Jan 2010<li>\n" -"<li>dd MMMM yy daje 05 Januar 10</li>\n" +"<li> ddd, d MMM yyyy даје Пон, 5 Јан 2010<li>\n" +"<li>dd MMMM yy даје 05 Јануар 10</li>\n" "</ul> " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:238 msgid "Use MMM yyyy for month + year, yyyy for year only" -msgstr "Koristite MMM yyyy za mesec + godinu, a yyyy ako želite samo godinu" +msgstr "Користите MMM yyyy за месец + годину, а yyyy ако желите само годину." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:239 msgid "Default: dd MMM yyyy." -msgstr "Podrazumeva se: dd MMM yyyy." +msgstr "Подразумева се: dd MMM yyyy." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:240 msgid "" @@ -13651,7 +13815,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:244 msgid "Format for &dates" -msgstr "Format za &datume" +msgstr "Формат за &датуме." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:245 msgid "Format for &numbers" @@ -13659,19 +13823,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:246 msgid "&Template" -msgstr "Š&ablon" +msgstr "Ш&аблон" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:247 msgid "Field template. Uses the same syntax as save templates." -msgstr "Šablon za polje. Koristi istu sintaksu kao šablon za snimanje." +msgstr "Шаблон за поље. Користи исту синтаксу као шаблон за снимање." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:248 msgid "Similar to save templates. For example, {title} {isbn}" -msgstr "Slično kao šabloni za snimanje. na primer, {title} {isbn}" +msgstr "Слично као шаблони за снимање. на пример, {наслов} {isbn}" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:249 msgid "Default: (nothing)" -msgstr "Podrazumevano: (ništa)" +msgstr "Подразумевано: (ништа)" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:250 msgid "&Sort/search column by" @@ -13696,7 +13860,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:255 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:260 msgid "Values" -msgstr "Vrednosti" +msgstr "Вредности" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:256 msgid "" @@ -13704,13 +13868,13 @@ msgid "" "included, and is the default. For example, the list 'one,two,three' has\n" "four values, the first of them being the empty value." msgstr "" -"Zarezima razdvojena lista dozvoljenih vrednosti. Prazna vrednost je uvek\n" -"uključena i podrazumeva se. na primer, lista 'jedan,dva,tri' ima\n" -"četiri vrednost, od kojih je prva prazna." +"Зарезима раздвојена листа дозвољених вредности. Празна вредност је увек\n" +"укључена и подразумева се. на пример, листа 'један,два,три' има\n" +"четири вредност, од којих је прва празна." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:259 msgid "The empty string is always the first value" -msgstr "Prazan niz znakova je uvek prva vrednost" +msgstr "Празан низ знакова је увек прва вредност." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:261 msgid "" @@ -13720,20 +13884,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column_ui.py:263 msgid "Colors" -msgstr "" +msgstr "Боје" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/device_debug.py:21 msgid "Getting debug information" -msgstr "Prikupljam podatke o grešci" +msgstr "Прикупљам податке о грешци." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/device_debug.py:22 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/device_user_defined.py:32 msgid "Copy to &clipboard" -msgstr "Kopiraj u memoriju" +msgstr "Сачувај у &остави" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/device_debug.py:24 msgid "Debug device detection" -msgstr "Ispravljanje grešaka u otkrivanju uređaja" +msgstr "Исправљање грешака у откривању уређаја." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/device_user_defined.py:31 msgid "Getting device information" @@ -13770,38 +13934,38 @@ msgid "" "automatically sent for downloaded news to all email addresses that have Auto-" "send checked." msgstr "" -"calibre će poslati knjige (vama, ili na vaš čitač) putem elektronske pošte. " -"Pošta sa preuzetim vestima će biti automatski poslata na sve adrese za koje " -"ste uključili Automatsko slanje." +"calibre ће послати књиге (вама, или на ваш читач) путем електронске поште. " +"Пошта са преузетим вестима ће бити аутоматски послата на све адресе за које " +"сте укључили Аутоматско слање." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:67 msgid "Add an email address to which to send books" -msgstr "Dodaj elektronsku adresu na koju će se slati knjige" +msgstr "Додај електронску адресу на коју ће се слати књиге." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:68 msgid "&Add email" -msgstr "&Dodaj elektronsku adresu" +msgstr "&Додај електронску адресу." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:69 msgid "Make &default" -msgstr "Učini &podrazumevanom vrednošću" +msgstr "Учини &подразумеваном вредношћу." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/email_ui.py:70 msgid "&Remove email" -msgstr "&Ukloni elektronsku adresu" +msgstr "&Уклони електронску адресу." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:27 msgid "Auto send" -msgstr "Automatsko slanje" +msgstr "Аутоматско слање." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:27 msgid "Email" -msgstr "Elektronska pošta" +msgstr "Е-пошта" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:32 msgid "Formats to email. The first matching format will be sent." msgstr "" -"Formati za slanje elektronskom poštom. Biće poslat prvi pronađeni format." +"Формати за слање електронском поштом. Биће послат први пронађени формат." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:33 msgid "" @@ -13815,40 +13979,40 @@ msgid "" "If checked, downloaded news will be automatically mailed <br>to this email " "address (provided it is in one of the listed formats)." msgstr "" -"Ako je opcija izabrana, preuzete vesti će biti poslate automatski <br>na ovu " -"elektronsku adresu (pod uslovom da je u jednom od navedenih formata)." +"Ако је изабрано, преузете вести ће бити послате аутоматски <br>на ову " +"електронску адресу (под условом да је у једном од наведених формата)." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/emailp.py:115 msgid "new email address" -msgstr "nova elektronska adresa" +msgstr "нова електронска адреса" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 msgid "Narrow" -msgstr "Uzak" +msgstr "Узак" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 msgid "Wide" -msgstr "Širok" +msgstr "Широк" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:134 msgid "Off" -msgstr "" +msgstr "Искљ." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:134 msgid "Small" -msgstr "Mala" +msgstr "Мала" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:135 msgid "Large" -msgstr "Velika" +msgstr "Велика" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:135 msgid "Medium" -msgstr "Srednja" +msgstr "Средњи" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:138 msgid "Always" -msgstr "Uvek" +msgstr "Увек" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:138 msgid "If there is enough room" @@ -13856,19 +14020,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:139 msgid "Never" -msgstr "Nikada" +msgstr "Никада" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" -msgstr "Po prvom slovu" +msgstr "По првом слову." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 msgid "Disabled" -msgstr "Isključeno" +msgstr "Искључено" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 msgid "Partitioned" -msgstr "Podeljeno" +msgstr "Подељено" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:176 msgid "Column coloring" @@ -13877,54 +14042,53 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " -msgstr " ili " +msgstr " или " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:223 msgid "User Interface &layout (needs restart):" -msgstr "Izg&led korisničkog interfejsa" +msgstr "Изг&лед корисничког сучеља (потребно препокретање):" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:224 msgid "Choose &language (requires restart):" -msgstr "Izaberi &jezik (zahteva ponovno pokretanje programa):" +msgstr "Изабери &језик (захтева поновно покретање програма):" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:225 msgid "Enable system &tray icon (needs restart)" -msgstr "" -"Uključi prikazivanje sis&temske ikone (zahteva ponovno startovanje programa)" +msgstr "Омогући икону у сис&темској палети (потребно препокретање)" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:226 msgid "Disable all animations. Useful if you have a slow/old computer." -msgstr "Onemogući sve animacije. Korisno ako imate spor/stari računar." +msgstr "Онемогући све анимације. Корисно ако имате спор/стари рачунар." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:227 msgid "Disable &animations" -msgstr "Onemogući &animacije" +msgstr "Онемогући &анимације" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:228 msgid "Disable ¬ifications in system tray" -msgstr "Isključi &poruke iz sistemske kasete" +msgstr "Искључи &поруке у системској палети" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:229 msgid "Show &splash screen at startup" -msgstr "Prikaži &početni ekran pri pokretanju programa" +msgstr "Прикажи &почетни екран при покретању програма." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:230 msgid "&Toolbar" -msgstr "&Traka sa alatima" +msgstr "Алатна трака" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:231 msgid "&Icon size:" -msgstr "Veličina &ikona:" +msgstr "Величина &икона:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:232 msgid "Show &text under icons:" -msgstr "Prikaži &tekst ispod ikona:" +msgstr "Прикажи &текст испод икона:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:233 msgid "Interface font:" -msgstr "Vrsta slova za korisnički interfejs:" +msgstr "Врста слова за кориснички интерфејс:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:234 msgid "Change &font (needs restart)" @@ -13940,11 +14104,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:237 msgid "Move up" -msgstr "" +msgstr "Помери нагоре" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:238 msgid "Move down" -msgstr "" +msgstr "Помери надоле" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:239 msgid "Default author link template:" @@ -13961,7 +14125,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:245 msgid "Use &Roman numerals for series" -msgstr "Koristi &rimske brojeve za serije" +msgstr "Користи &римске бројеве за серије." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:246 msgid "" @@ -13981,11 +14145,11 @@ msgid "" "have a list of fixed-sized groups. Set to disabled\n" "if you never want subcategories" msgstr "" -"Izaberite kako će biti prikazene podkategorije u izlogu etiketa kada\n" -"ima više elemenata nego što je moguće prikazati. Izaberite 'po \n" -"prvom slovu' da vidite abecednu listu. Izaberite 'podeljeno' da \n" -"vidite grupe podjednake veličine. Postavite na 'isključeno'\n" -"ako vam podkategorije nikada nisu potrebne" +"Изаберите како ће бити приказане подкатегорије у излогу етикета када\n" +"има више елемената него што је могуће приказати. Изаберите 'по \n" +"првом слову' да видите абецедну листу. Изаберите 'подељено' да \n" +"видите групе подједнаке величине. Поставите на 'искључено'\n" +"ако вам подкатегорије никада нису потребне." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:254 msgid "&Collapse when more items than:" @@ -14013,7 +14177,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:263 msgid "Show &average ratings in the tags browser" -msgstr "Prik&aži srednje ocene u izlogu etiketa" +msgstr "Прик&ажи средње оцене у излогу етикета." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:264 msgid "Categories with &hierarchical items:" @@ -14032,14 +14196,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:272 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" -"Prikaži &izlog naslovnih strana u posebnom prozoru (zahteva ponovno " -"startovanje programa)" +"Прикажи &излог насловних страна у посебном прозору (поново препокрени)." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:273 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" -"&Broj naslovnih strana koje će biti prikazane u izlogu (zahteva ponovno " -"startovanje programa):" +"&Број насловних страна које ће бити приказане у излогу (поново препокрени):" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:274 msgid "When showing cover browser in separate window, show it &fullscreen" @@ -14053,44 +14215,44 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:230 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:92 msgid "&Apply" -msgstr "&Primeni" +msgstr "&Примени" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:237 msgid "Restore &defaults" -msgstr "Vrati po&drazumevane vrednosti" +msgstr "Врати по&дразумеване вредности." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:238 msgid "Save changes" -msgstr "Sačuvaj izmene" +msgstr "Сачувај измене" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:239 msgid "Cancel and return to overview" -msgstr "Odustani i vrati se na pregled" +msgstr "Одустани и врати се на преглед." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:295 msgid "Restoring to defaults not supported for" -msgstr "Vraćanje na podrazumevane vrednosti nije podržano za" +msgstr "Враћање на подразумеване вредности није подржано за" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:331 msgid "" "Some of the changes you made require a restart. Please restart calibre as " "soon as possible." msgstr "" -"Neke od izmena koje ste napravili zahtevaju ponovo pokretanje programa. " -"Molim vas da što pre ponovo pokrenete calibre." +"Неке од измена које сте направили захтевају поново покретање програма. Молим " +"вас да што пре поново покренете calibre." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:334 msgid "" "The changes you have made require calibre be restarted immediately. You will " "not be allowed set any more preferences, until you restart." msgstr "" -"Izmene koje ste uneli zahtevaju da odmah ponovo pokrenete calibre. Dok to ne " -"uradite neće biti moguće menjati ostala podešavanja." +"Измене које сте унели захтевају да одмах поново покренете calibre. Док то не " +"урадите неће бити могуће мењати остала подешавања." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:339 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:134 msgid "Restart needed" -msgstr "Potrebno je ponovno pokretanje" +msgstr "Потребно је поновно покретање." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:341 msgid "Restart calibre now" @@ -14098,7 +14260,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:48 msgid "Source" -msgstr "" +msgstr "Извор" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:50 msgid "Cover priority" @@ -14129,7 +14291,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:322 msgid "No source selected" -msgstr "" +msgstr "Извор није изабран" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:323 msgid "No source selected, cannot configure." @@ -14163,7 +14325,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:71 msgid "&Select all" -msgstr "" +msgstr "&Означи све" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:75 msgid "&Clear all" @@ -14209,7 +14371,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:206 msgid " secs" -msgstr " sekundi" +msgstr " секунди" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:113 msgid "Max. time to wait after first &cover is found:" @@ -14240,22 +14402,22 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:66 msgid "Failed to install command line tools." -msgstr "Nisam uspeo da instaliram alate za komandnu liniju." +msgstr "Нисам успео да инсталирам алате за командну линију." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:69 msgid "Command line tools installed" -msgstr "Alati za komandnu liniju su instalirani" +msgstr "Алати за командну линију су инсталирани." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:70 msgid "Command line tools installed in" -msgstr "Alati za komandnu liniju su instalirani u" +msgstr "Алати за командну линију су инсталирани у" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc.py:71 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" -"Ako promenite direktorijum za calibre.app moraćete da ponovo instalirate " -"alate za komandnu liniju." +"Ако промените директоријум за calibre.app мораћете да поново инсталирате " +"алате за командну линију." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:25 msgid "Max. simultaneous conversion/news download jobs:" @@ -14264,12 +14426,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:33 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" -"Ograniči najveći broj istovremenih poslova na broj raspoloživih &procesora " -"(ili procesorskih jezgara)" +"Ограничи највећи број истовремених послова на број расположивих &процесора " +"(или процесорских језгара)." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:39 msgid "Debug &device detection" -msgstr "Traži greške u otkrivanju &uređaja" +msgstr "Тражи грешке у откривању &уређаја." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:43 msgid "Get information to setup the &user defined device" @@ -14277,11 +14439,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:51 msgid "Open calibre &configuration directory" -msgstr "Otvori direktorijum koji sadrži calibre &konfiguraciju" +msgstr "Отвори директоријум који садржи calibre &конфигурацију." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:57 msgid "&Install command line tools" -msgstr "&Instaliraj alatke za komandnu liniju" +msgstr "&Инсталирај алатке за командну линију." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:67 msgid "&Abort conversion jobs that take more than:" @@ -14293,15 +14455,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/misc_ui.py:72 msgid " minutes" -msgstr "" +msgstr " минута" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:53 msgid "Device currently connected: " -msgstr "Trenutno priključen uređaj: " +msgstr "Тренутно прикључен уређај: " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:56 msgid "Device currently connected: None" -msgstr "Trenutno priključen uređaj: Nijedan" +msgstr "Тренутно прикључен уређај: Ниједан" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:193 msgid "That format and device already has a plugboard." @@ -14350,11 +14512,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:285 msgid "Invalid destination" -msgstr "Neispravno odredište" +msgstr "Неисправно одредиште." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:286 msgid "The destination field cannot be blank" -msgstr "Odredište ne može biti prazno" +msgstr "Одредиште не може бити празно." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:114 msgid "" @@ -14375,58 +14537,58 @@ msgid "" "users might do to force it to use the ';' that the kindle requires. A third " "would be to specify the language." msgstr "" -"Ovde možete izmeniti metapodatke koje calibre koristi kako bi ažurirao " -"knjige kada ih snima na disk, ili šalje na uređaj.\n" +"Овде можете изменити метаподатке које calibre користи како би ажурирао књиге " +"када их снима на диск, или шаље на уређај.\n" "\n" -"Koristite ovaj dijalog da definišete 'priključak' za format (ili sve " -"formate), ili uređaj (ili sve uređaje). Priključak određuje koji šablon će " -"biti povezan s kojim poljem. Šablon se koristi da odredi vrednost koj aće " -"biti dodeljena priključenom polju.\n" +"Користите овај дијалог да дефинишете 'прикључак' за формат (или све " +"формате), или уређај (или све уређаје). Прикључак одређује који шаблон ће " +"бити повезан с којим пољем. Шаблон се користи да одреди вредност која ће " +"бити додељена прикљученом пољу.\n" "\n" -"Šabloni će često sadržati jednostavne veze ka složenim kolonama, ali to nije " -"neophodno. U izvornom polju možete koristiti bilo koji šablon koji može da " -"se koristi drugde u calibreu.\n" +"Шаблони ће често садржати једноставне везе ка сложеним колонама, али то није " +"неопходно. У изворном пољу можете користити било који шаблон који може да се " +"користи другде у calibre-у.\n" "\n" -"Jedna moguća upotreba priključaka je da u naslov daodate informaciju o " -"seriji. Druga mogućša upotreba je da se izmeni način sortiranja po autoru, " -"nešto što bi korisnici formata MOBI mogli da urade kako bi dodali ';' koji " -"Kindle zahteva. Treća upotreba bi mogla da bude definisanje jezika." +"Једна могућа употреба прикључака је да у наслов додате информацију о серији. " +"Друга могућа употреба је да се измени начин разврставања по аутору, нешто " +"што би корисници формата MOBI могли да ураде како би додали ';' који Kindlе " +"захтева. Трећа употреба би могла да буде дефинисање језика." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:121 msgid "Format (choose first)" -msgstr "Format (izaberite prvi)" +msgstr "Формат (изаберите први)." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:122 msgid "Device (choose second)" -msgstr "Uređaj (izaberite drugi)" +msgstr "Уређај (изаберите други)." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:123 msgid "Add new plugboard" -msgstr "Dodaj novi priključak" +msgstr "Додај нови прикључак." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:124 msgid "Edit existing plugboard" -msgstr "Izmeni postojeći priključak" +msgstr "Измени постојећи прикључак." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:125 msgid "Existing plugboards" -msgstr "Postojeći priključci" +msgstr "Постојећи прикључци." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:126 msgid "Source template" -msgstr "Izvorni šablon" +msgstr "Изворни шаблон." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:127 msgid "Destination field" -msgstr "Odredišno polje" +msgstr "Одредишно поље." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:128 msgid "Save plugboard" -msgstr "Snimi priključak" +msgstr "Сними прикључак." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:129 msgid "Delete plugboard" -msgstr "Izbriši priključak" +msgstr "Избриши прикључак." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:193 #, python-format @@ -14443,7 +14605,7 @@ msgid "" "Customization: " msgstr "" "\n" -"Podešavanja: " +"Подешавања: " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:234 msgid "Search for plugin" @@ -14455,7 +14617,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:290 msgid "files" -msgstr "" +msgstr "датотеке" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:291 msgid "Add plugin" @@ -14463,12 +14625,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:323 msgid "No valid plugin path" -msgstr "Ne postoji ispravna putanja do dodataka" +msgstr "Не постоји исправна путања до додатака." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:324 #, python-format msgid "%s is not a valid plugin path" -msgstr "%s nije ispravna putanja do dodataka" +msgstr "%s није исправна путања до додатака." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:333 #, python-format @@ -14481,20 +14643,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:371 msgid "Cannot remove builtin plugin" -msgstr "Ne mogu da uklonim ugrađeni dodatak" +msgstr "Не могу да уклоним уграђени додатак." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:372 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" -" se ne može ukloniti. Ovaj dodatak je ugrađen. Probajte da ga isključite." +" се не може уклонити. Овај додатак је уграђен. Пробајте да га искључите." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:109 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." msgstr "" -"Ovde možete promeniti ponašanje Calibrea izborom dodataka koji će biti " -"korišćeni za:" +"Овде можете променити понашање Calibre-а избором додатака који ће бити " +"коришћени за:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:112 msgid "Show only those plugins that have been installed by you" @@ -14518,7 +14680,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:34 msgid "Any custom field" -msgstr "Dodaj korisničko polje" +msgstr "Додај корисничко поље." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:35 msgid "The lookup name of any custom field (these names begin with \"#\")." @@ -14526,19 +14688,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:66 msgid "Constant template" -msgstr "Stalni šablon" +msgstr "Стални шаблон." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template.py:67 msgid "" "The template contains no {fields}, so all books will have the same name. Is " "this OK?" msgstr "" -"Šablon ne sadrži nijedno od polja {fields}, pa će sve knjige imati isti " -"naziv. Da li je ovo u redu?" +"Шаблон не садржи ниједно од поља , па ће све књиге имати исти назив. Да ли " +"је ово у реду?" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:57 msgid "Save &template" -msgstr "&Snimi šablon:" +msgstr "&Сачувај шаблон:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:58 msgid "" @@ -14548,15 +14710,15 @@ msgid "" "particular book does not have some metadata, the variable will be replaced " "by the empty string." msgstr "" -"Podešavanjem ovog šablona možete birati u koje direktorijume i kako će biti " -"snimljeni fajlovi. Možete koristitii znak / da navedete pod-direktorijume. " -"Metapodaci (promenljive) koji su vam na raspolaganju su takođe navedeni " -"niže. Ako određena knjiga nema neki od metapodataka oni će biti zamenjeni " -"praznim nizom znakova." +"Подешавањем овог шаблона можете бирати у које директоријуме и како ће бити " +"снимљене датотеке. Можете користитии знак / да наведете под-директоријуме. " +"Метаподаци (променљиве) који су вам на располагању су такође наведени ниже. " +"Ако одређена књига нема неки од метаподатака они ће бити замењени празним " +"низом знакова." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:59 msgid "Available variables:" -msgstr "Raspoložive promenljive:" +msgstr "Расположиве променљиве:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/save_template_ui.py:60 msgid "Template Editor" @@ -14567,41 +14729,41 @@ msgid "" "Here you can control how calibre will save your books when you click the " "Save to Disk button:" msgstr "" -"Ovde možete upravljati načinom na koji calibre snima vaše knjige kada " -"pritisnete dugme Snimi na disk:" +"Овде можете управљати начином на који calibre чува ваше књиге када " +"притиснете дугме Сачувај на диск:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:30 msgid "Save &cover separately" -msgstr "Snimi &naslovnu stranu u poseban fajl" +msgstr "Сачувај &насловну страну у посебну датотеку" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:34 msgid "Replace space with &underscores" -msgstr "Promeni razmake u &donje crte" +msgstr "Промени размаке у &доње црте." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:38 msgid "Update &metadata in saved copies" -msgstr "Osveži &metapodatke u snimljenim kopijama" +msgstr "Освежи &метаподатке у сачуваним копијама" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:42 msgid "Change paths to &lowercase" -msgstr "Promeni putanje u &mala slova" +msgstr "Промени путање у &мала слова." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:57 msgid "Format &dates as:" -msgstr "Formatiraj &datume na sledeći način:" +msgstr "Форматирај &датуме на следећи начин:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:53 msgid "File &formats to save:" -msgstr "&Formati koji će biti snimljeni:" +msgstr "&Формати који ће бити сачувани:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:63 msgid "Convert non-English characters to &English equivalents" -msgstr "Konvertuj ne-engleske znake u &engleske ekvivalente" +msgstr "Претвори не-енглеске знаке у &енглеске еквиваленте." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:67 msgid "Save metadata in &OPF file" -msgstr "Snimi metapodatke u &OPF fajl" +msgstr "Сачувај метаподатке у &OPF датотеци" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/saving_ui.py:71 msgid "&Show files in file browser after saving to disk" @@ -14732,11 +14894,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14750,17 +14907,17 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:41 msgid "Manual management" -msgstr "Ručno upravljanje" +msgstr "Ручно управљање." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:29 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:43 msgid "Only on send" -msgstr "Samo pri slanju" +msgstr "Само при слању." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:30 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:45 msgid "Automatic management" -msgstr "Automatsko upravljanje" +msgstr "Аутоматско управљање." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:36 msgid "Cannot change metadata management while a device is connected" @@ -14768,7 +14925,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:30 msgid "Metadata &management:" -msgstr "Upravljanje &metapodacima:" +msgstr "Управљање &метаподацима:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:50 msgid "" @@ -14780,14 +14937,14 @@ msgid "" "<li><b>Automatic management</b>: Calibre automatically keeps metadata on the " "device in sync with the calibre library, on every connect</li></ul>" msgstr "" -"<li><b>Ručno upravljanje</b>: Calibre obnavlja metapodatke i dodaje " -"kolekcije samo kada je knjiga poslata. Sa ovom opcijom, calibre nikada neće " -"ukloniti kolekciju.</li>\n" -"<li><b>Samo pri slanju</b>: Calibre obnavlja metapodatke i dodaje/uklanja " -"kolekcije za knjigu samo kada se ona šalje na uređaj. </li>\n" -"<li><b>Automatsko upravljanje</b>: Calibre automatski održava sinhronizaciju " -"metapodataka na uređaju i u calibre biblioteci, pri svakom " -"povezivanju</li></ul>" +"<li><b>Ручно управљање</b>: Calibre обнавља метаподатке и додаје колекције " +"само када је књига послата. Са овом могућношћу, calibre никада неће уклонити " +"колекцију.</li>\n" +"<li><b>Само при слању</b>: Calibre обнавља метаподатке и додаје/уклања " +"колекције за књигу само када се она шаље на уређај. </li>\n" +"<li><b>Аутоматско управљање</b>: Calibre аутоматски одржава синхронизацију " +"метаподатака на уређају и у calibre библиотеци, при сваком " +"повезивању</li></ul>" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:64 msgid "" @@ -14795,22 +14952,22 @@ msgid "" "Send to Device button. This setting can be overriden for individual devices " "by customizing the device interface plugins in Preferences->Advanced->Plugins" msgstr "" -"Ovde možete upravljati time kako calibre snima vaše knjige kada kliknete " -"dugme Pošalji na uređaj. Ova podešavanja se mogu promeniti za pojedine " -"uređaje podešavanjem dodatka za uređaj u meniju Podešavanja->Napredna->Dodaci" +"Овде можете управљати тиме како calibre чува ваше књиге када кликнете дугме " +"Пошаљи на уређај. Ова подешавања се могу променити за поједине уређаје " +"подешавањем додатка за уређај у изборнику Подешавања->Напредна->Додаци" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" -msgstr "Nisam uspeo da pokrenem server sadržaja" +msgstr "Нисам успео да покренем сервер садржаја." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:113 msgid "Error log:" -msgstr "Dnevnik grešaka:" +msgstr "Дневник грешака:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:120 msgid "Access log:" -msgstr "Dnevnik pristupa:" +msgstr "Дневник приступа:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:135 msgid "You need to restart the server for changes to take effect" @@ -14821,105 +14978,102 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -"Maksimalna veličina (širinaxvisina) za prikaz naslovnih strana. Veće " -"naslovne strane će biti smanjene. " +"Максимална величина (ширинаxвисина) за приказ насловних страна. Веће " +"насловне стране ће бити смањене. " -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" -msgstr "Maks. veličina &naslovne strane:" +msgstr "Нај. величина &насловне стране:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" -msgstr "&Port za server:" +msgstr "&Прикључак за сервер:" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +msgid "Max. &OPDS items per query:" +msgstr "Нај. број &OPDS ставки по упиту:" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +msgid "Max. OPDS &ungrouped items:" +msgstr "Нај. OPDS негр&уписане ставке:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 -msgid "Max. &OPDS items per query:" -msgstr "Maks. broj &OPDS stavki po upitu:" +msgid "Restriction (saved search) to apply:" +msgstr "Ограничење (сачувана претрага) које треба применити:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 -msgid "Max. OPDS &ungrouped items:" -msgstr "Maks. OPDS negr&upisane stavke:" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 -msgid "Restriction (saved search) to apply:" -msgstr "Ograničenje (sačuvana pretraga) koje treba priemeniti:" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -"Ovo ograničenje (zasnovano na sačuvanoj pretrazi) će ograničiti kojim " -"knjigama će server dozvoliti pristup. Ovo podešavanje je vezano za " -"biblioteku (tj. možete navesti različita ograničenja za različite " -"biblioteke)." +"Ово ограничење (засновано на сачуваној претрази) ће ограничити којим књигама " +"ће сервер дозволити приступ. Ово подешавање је везано за библиотеку (тј. " +"можете навести различита ограничења за различите библиотеке)." + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +msgid "" +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" +msgstr "Лозинка није одговарајућа са неким уређајима" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 -msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "&URL Prefix:" -msgstr "" +msgstr "&УРЛ префикс:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" -msgstr "&Pokreni server" +msgstr "&Покрени сервер." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" -msgstr "&Zaustavi server" +msgstr "&Заустави сервер." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" -msgstr "&Proveri server" +msgstr "&Провери сервер." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -"calibre sadrži server koji omogućava pristup vašoj biblioteci preko " -"Interneta. Sve izmene koje ovde unesete će postati aktivne tek posle " -"ponovnog pokretanja servera." +"calibre садржи сервер који омогућава приступ вашој библиотеци преко " +"Интернета. Све измене које овде унесете ће постати активне тек после " +"поновног покретања сервера." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" -msgstr "" +msgstr "Покрени сервер &аутоматски кад се calibre покрене" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" -msgstr "Prikaži &serverski dnevnik" +msgstr "Прикажи &серверски дневник." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -15034,7 +15188,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:96 msgid "&Function:" -msgstr "" +msgstr "&Функција:" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:97 msgid "Enter the name of the function to create." @@ -15050,15 +15204,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:102 msgid "&Delete" -msgstr "" +msgstr "&Обриши" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:103 msgid "&Replace" -msgstr "" +msgstr "&Замени" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:104 msgid "C&reate" -msgstr "" +msgstr "Н&аправи" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:105 msgid "&Program Code: (be sure to follow python indenting rules)" @@ -15070,23 +15224,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:36 msgid "Switch between library and device views" -msgstr "Prebaci se između pogleda na biblioteku, ili uređaj" +msgstr "Пребаци се између погледа на библиотеку, или уређај." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:42 msgid "Separator" -msgstr "Separator" +msgstr "Раздвајач" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:59 msgid "Choose library" -msgstr "Izaberite biblioteku" +msgstr "Изаберите библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:220 msgid "The main toolbar" -msgstr "Glavna traka sa alatima" +msgstr "Главна трака са алатима." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:221 msgid "The main toolbar when a device is connected" -msgstr "Glavna traka sa alatima kada je uređaj priključen" +msgstr "Главна трака са алатима када је уређај прикључен." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:222 msgid "The optional second toolbar" @@ -15102,11 +15256,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:225 msgid "The context menu for the books in the calibre library" -msgstr "Kontektskno osetljiv meni za knjige u calibre biblioteci" +msgstr "Контектскно осетљив мени за књиге у calibre библиотеци." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:227 msgid "The context menu for the books on the device" -msgstr "Kontektskno osetljiv meni za knjige na uerđaju" +msgstr "Контектскно осетљив изборник за књиге на уерђају." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:229 msgid "The context menu for the cover browser" @@ -15118,21 +15272,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:271 msgid "Cannot add" -msgstr "Ne mogu da dodam" +msgstr "Не могу да додам." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:272 #, python-format msgid "Cannot add the actions %s to this location" -msgstr "Ne mogu da dodam akcije %s na ovo mesto" +msgstr "Не могу да додам акције %s на ово место." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:290 msgid "Cannot remove" -msgstr "Ne mogu da uklonim" +msgstr "Не могу да уклоним." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:291 #, python-format msgid "Cannot remove the actions %s from this location" -msgstr "Ne mogu da uklonim akcije %s sa ovog mesta" +msgstr "Не могу да уклоним акције %s са овог места." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:25 msgid "" @@ -15146,7 +15300,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:42 msgid "A&vailable actions" -msgstr "Raspoloži&ve akcije" +msgstr "Расположи&ве акције." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:62 msgid "Add selected actions to toolbar" @@ -15154,19 +15308,19 @@ msgstr "Dodaj izabranu akciju na traku sa alatima" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:73 msgid "Remove selected actions from toolbar" -msgstr "Ukloni izabranu akciju s trake sa alatima" +msgstr "Уклони изабрану акцију с траке са алатима." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:83 msgid "&Current actions" -msgstr "A&ktuelne akcije" +msgstr "А&ктуелне акције." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:102 msgid "Move selected action up" -msgstr "Pomeri izabranu akciju naviše" +msgstr "Помери изабрану акцију навише." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar_ui.py:113 msgid "Move selected action down" -msgstr "Pomeri izabranu akciju naniže" +msgstr "Помери изабрану акцију наниже." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:120 msgid "This tweak has it default value" @@ -15196,16 +15350,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:391 msgid "Invalid tweaks" -msgstr "Neispravna podešavanja" +msgstr "Неисправна подешавања." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:392 msgid "" "The tweaks you entered are invalid, try resetting the tweaks to default and " "changing them one by one until you find the invalid setting." msgstr "" -"Podešavanja koja ste uneli su neispravna. Probajte da ih vratite na " -"podrazumevanu vrednost, a zatim menjate jedno po jedno dok ne otkrijete koje " -"je pogrešno." +"Подешавања која сте унели су неисправна. Пробајте да их вратите на " +"подразумевану вредност, а затим мењатје једно по једно док не откријете које " +"је погрешно." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks_ui.py:25 msgid "" @@ -15248,15 +15402,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:351 msgid "The selected search will be <b>permanently deleted</b>. Are you sure?" -msgstr "Izabrana pretraga će bit <b>izbrisana zauvek</b>. Da li ste sigurni?" +msgstr "" +"Изабрана претрага ће бити <b>избрисана заувек</b>. Да ли сте сигурни?" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:376 msgid "Search (For Advanced Search click the button to the left)" -msgstr "Traži (za naprednu pretragu kliknite dugme levo)" +msgstr "Тражи (за напредну претрагу кликните дугме лево)." #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:392 msgid "Start search" -msgstr "" +msgstr "Покрени претрагу" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:402 msgid "Enable or disable search highlighting." @@ -15264,11 +15419,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:457 msgid "Saved Searches" -msgstr "Sačuvane pretrage" +msgstr "Сачуване претраге" #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:459 msgid "Choose saved search or enter name for new saved search" -msgstr "Izaberite sačuvanu pretragu, ili unesite ime za novu" +msgstr "Изаберите сачувану претрагу, или унесите име за нову." #: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:465 msgid "" @@ -15294,12 +15449,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:12 msgid "Restrict to" -msgstr "Ograniči na" +msgstr "Ограничи на" #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:19 #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:93 msgid "(all books)" -msgstr "(sve knjige)" +msgstr "(све књиге)" #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:21 msgid "" @@ -15312,41 +15467,41 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:88 msgid "({0} of {1})" -msgstr "({0} od {1})" +msgstr "({0} од {1})" #: /home/kovid/work/calibre/src/calibre/gui2/search_restriction_mixin.py:95 msgid "({0} of all)" -msgstr "({0} od svih)" +msgstr "({0} од свих)" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:134 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:74 msgid "&Default" -msgstr "Po&drazumevano" +msgstr "&Подразумевано" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:136 msgid "Customize shortcuts for" -msgstr "Podesi prečice za" +msgstr "Подеси пречице за" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 msgid "Keys" -msgstr "Dirke" +msgstr "Тастери" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:225 msgid "Double click to change" -msgstr "Klikni dva puta da promeniš" +msgstr "Кликни два пута да промениш." #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 msgid "Frame" -msgstr "Okvir" +msgstr "Оквир" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 msgid "&Custom" -msgstr "&Posebno" +msgstr "&Прилагођено" #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:82 msgid "Click to change" -msgstr "Klikni da promeniš" +msgstr "Кликните за измену" #: /home/kovid/work/calibre/src/calibre/gui2/store/basic_config_widget_ui.py:38 msgid "Added Tags:" @@ -15358,19 +15513,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:219 msgid "&Name:" -msgstr "" +msgstr "&Име:" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:221 msgid "&Description:" -msgstr "" +msgstr "&Опис:" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:222 msgid "&Headquarters:" -msgstr "" +msgstr "&Седиште:" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:226 msgid "Enabled:" -msgstr "" +msgstr "Омогућено:" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:227 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:189 @@ -15384,7 +15539,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:197 msgid "true" -msgstr "" +msgstr "тачно" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:231 @@ -15393,45 +15548,45 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:199 msgid "false" -msgstr "" +msgstr "нетачно" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:163 msgid "Affiliate:" -msgstr "" +msgstr "Подружница:" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:235 msgid "Nam&e/Description ..." -msgstr "" +msgstr "Наз&ив/Опис ..." #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:31 #: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:108 msgid "Query:" -msgstr "" +msgstr "Упит:" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:81 msgid "Enable" -msgstr "" +msgstr "Омогући" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/chooser_widget_ui.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/store/search_ui.py:112 msgid "Invert" -msgstr "" +msgstr "Окрени" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Affiliate" -msgstr "" +msgstr "Подружница" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 msgid "Enabled" -msgstr "" +msgstr "Укључено" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 msgid "Headquarters" -msgstr "" +msgstr "Седиште" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 msgid "No DRM" @@ -15479,12 +15634,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/results_view.py:47 msgid "Configure..." -msgstr "" +msgstr "Подеси..." #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search/search_widget_ui.py:25 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search_widget_ui.py:99 msgid "Time" -msgstr "" +msgstr "Време" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search/search_widget_ui.py:30 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search_widget_ui.py:100 @@ -15499,7 +15654,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search/search_widget_ui.py:50 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search_widget_ui.py:102 msgid "Display" -msgstr "" +msgstr "Приказ" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search/search_widget_ui.py:55 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search_widget_ui.py:103 @@ -15513,7 +15668,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search/search_widget_ui.py:68 msgid "Threads" -msgstr "" +msgstr "Нити" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search/search_widget_ui.py:73 msgid "Number of search threads to use" @@ -15533,7 +15688,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search_widget_ui.py:105 msgid "Performance" -msgstr "" +msgstr "Учинак" #: /home/kovid/work/calibre/src/calibre/gui2/store/config/search_widget_ui.py:106 msgid "Number of simultaneous searches" @@ -15553,13 +15708,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread_store_dialog_ui.py:62 msgid "Search:" -msgstr "" +msgstr "Тражи:" #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread_store_dialog_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/store_dialog_ui.py:77 msgid "Books:" -msgstr "" +msgstr "Књиге:" #: /home/kovid/work/calibre/src/calibre/gui2/store/mobileread_store_dialog_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/search_ui.py:135 @@ -15568,15 +15723,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:63 #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:670 msgid "Close" -msgstr "" +msgstr "Затвори" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:129 msgid "&Price:" -msgstr "" +msgstr "&Цена:" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:176 msgid "Download:" -msgstr "" +msgstr "Преузми:" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:235 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:187 @@ -15589,11 +15744,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Download" -msgstr "" +msgstr "Преузми" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Price" -msgstr "" +msgstr "Цена" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:234 #, python-format @@ -15632,7 +15787,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/search/results_view.py:41 msgid "Download..." -msgstr "" +msgstr "Преузми..." #: /home/kovid/work/calibre/src/calibre/gui2/store/search/results_view.py:45 msgid "Goto in store..." @@ -15674,15 +15829,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/ebooks_com_plugin.py:102 msgid "Not Available" -msgstr "" +msgstr "Недоступна" #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:179 msgid "" "See the <a href=\"http://calibre-ebook.com/user_manual/gui.html#the-search-" "interface\">User Manual</a> for more help" msgstr "" -"Za više informacija i pomoć vidi <a href=\"http://calibre-" -"ebook.com/user_manual/gui.html#the-search-interface\">Korisničko uputstvo</a>" +"За више информација и помоћ види <a href=\"http://calibre-" +"ebook.com/user_manual/gui.html#the-search-interface\">Корисничко упутство</a>" #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/cache_progress_dialog_ui.py:51 msgid "Updating book cache" @@ -15711,7 +15866,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/store_dialog_ui.py:74 msgid "&Query:" -msgstr "" +msgstr "&Испитај:" #: /home/kovid/work/calibre/src/calibre/gui2/store/web_control.py:75 msgid "" @@ -15729,15 +15884,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:59 msgid "Home" -msgstr "" +msgstr "Почетна" #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:60 msgid "Reload" -msgstr "" +msgstr "Поново учитај" #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:61 msgid "%p%" -msgstr "" +msgstr "%p%" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:307 msgid "The grouped search term name is \"{0}\"" @@ -15746,43 +15901,43 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:734 msgid "" "Changing the authors for several books can take a while. Are you sure?" -msgstr "Promena autora za više knjiga može potrajati. Da li ste sigurni?" +msgstr "Промена аутора за више књига може потрајати. Да ли сте сигурни?" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:739 msgid "" "Changing the metadata for that many books can take a while. Are you sure?" msgstr "" -"Izmena metapodataka za ovoliko knjiga može potrajati. Da li ste sigurni?" +"Измена метаподатака за оволико књига може потрајати. Да ли сте сигурни?" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:826 #: /home/kovid/work/calibre/src/calibre/library/database2.py:469 msgid "Searches" -msgstr "Pretrage" +msgstr "Претраге" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" -msgstr "Naziv pretrage već postoji" +msgstr "Назив претраге већ постоји." -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." -msgstr "Naziv sačuvane pretrage %s je već u upotrebi." +msgstr "Назив сачуване претраге %s је већ у употреби." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:49 msgid "Manage Authors" @@ -15794,22 +15949,22 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:53 msgid "Manage Publishers" -msgstr "" +msgstr "Управљање издавачима" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:55 msgid "Manage Tags" -msgstr "" +msgstr "Управљање oзнакама" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:476 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:480 msgid "Manage User Categories" -msgstr "Uredi korisničke kategorije" +msgstr "Уреди корисничке категорије." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:468 msgid "Manage Saved Searches" -msgstr "Uredi sačuvane pretrage" +msgstr "Уреди сачуване претраге." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:67 msgid "Invalid search restriction" @@ -15821,7 +15976,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:84 msgid "New Category" -msgstr "" +msgstr "Нова категорија" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:135 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:138 @@ -15858,7 +16013,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:253 msgid "Delete item" -msgstr "" +msgstr "Обриши ставку" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:255 #, python-format @@ -15867,7 +16022,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:333 msgid "Find item in tag browser" -msgstr "Pronađi stavku u izlogu etiketa" +msgstr "Пронађи ставку у излогу етикета." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:337 msgid "" @@ -15878,14 +16033,13 @@ msgid "" "*foo will filter all categories at once, showing only those items\n" "containing the text \"foo\"" msgstr "" -"Traži stavke. Ovo je pretraga tipa \"sadrži\"; biće pronađene stavke koje\n" -"sadrže zadati tekst bilo gde u svom imenu. Možete ograničiti pertraživanje\n" -"na odeređene kategorije koristeći sintaksu sličnu običnom pretraživanju.\n" -"Na primer, tags:foo će pronaći 'foo' u bilo kojoj etiketi, ali ne i u " -"autoru, itd.\n" -"Unošenje *foo će pretražiti sve kategorije odjednom, prikazujući samo " -"stavke\n" -"koje sadrže tekst \"foo\"" +"Тражи ставке. Ово је претрага типа \"садржи\"; биће пронађене ставке које\n" +"садрже задати текст било где у свом имену. Можете ограничити пертраживање\n" +"на одеређене категорије користећи синтаксу сличну обичном претраживању.\n" +"На пример, tags:foo ће пронаћи 'foo' у било којој етикети, али не и у " +"аутору, итд.\n" +"Уношење *foo ће претражити све категорије одједном, приказујући само ставке\n" +"које садрже текст \"foo\"" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:345 msgid "ALT+f" @@ -15893,51 +16047,51 @@ msgstr "ALT+f" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:350 msgid "Find the first/next matching item" -msgstr "Pronađi prvu/sledeću stavku" +msgstr "Пронађи прву/следећу ставку." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:355 msgid "Collapse all categories" -msgstr "Zatvori sve kategorije" +msgstr "Затвори све категорије." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:379 msgid "No More Matches.</b><p> Click Find again to go to first match" msgstr "" -"Nema više rezultata pretrage.</b><p> Kliknite na \"Traži ponovo\" da biste " -"skočili na prvi rezultat" +"Нема више резултата претраге.</b><p> Кликните на \"Тражи поново\" да бисте " +"скочили на први резултат." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:392 msgid "Sort by name" -msgstr "Sortiraj po imenu" +msgstr "Поређај по имену" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:392 msgid "Sort by popularity" -msgstr "Sortiraj po popularnosti" +msgstr "Поређај по популарности" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:393 msgid "Sort by average rating" -msgstr "Sortiraj po srednjoj oceni" +msgstr "Поређај по средњој оцени" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:396 msgid "Set the sort order for entries in the Tag Browser" -msgstr "Odredite način sortiranja u Izlogu etiketa" +msgstr "Одредите начин разврставања у Излогу етикета" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:403 msgid "Match all" -msgstr "Moraju odgovarati svi" +msgstr "Морају одговарати сви." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:403 msgid "Match any" -msgstr "Odgovara bilo koji od" +msgstr "Одговара било који од." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:408 msgid "" "When selecting multiple entries in the Tag Browser match any or all of them" msgstr "" -"Kada je u Izlogu etiketa izabrano više stavki traži bilo koju od njih" +"Када је у Излогу етикета изабрано више ставки тражи било коју од њих." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:415 msgid "Manage authors, tags, etc" -msgstr "" +msgstr "Управљање писцима, ознакама, итд" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:416 msgid "" @@ -15955,7 +16109,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:355 #, python-format msgid "Delete %s" -msgstr "" +msgstr "Обриши %s" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:359 #, python-format @@ -16010,11 +16164,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:431 #, python-format msgid "Hide category %s" -msgstr "Sakrij kategoriju %s" +msgstr "Сакриј категорију %s" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:435 msgid "Show category" -msgstr "Prikaži kategoriju" +msgstr "Прикажи категорију." #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:445 #, python-format @@ -16030,15 +16184,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:465 #, python-format msgid "Manage %s" -msgstr "Uredi '%s'" +msgstr "Уреди '%s'" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:487 msgid "Show all categories" -msgstr "Prikaži sve kategorije" +msgstr "Прикажи све категорије" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:490 msgid "Change sub-categorization scheme" -msgstr "Promeni naćin kreiranja podkategorija" +msgstr "Промени шему подкатегорије" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" @@ -16047,12 +16209,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:70 #, python-format msgid "Convert book %(num)d of %(total)d (%(title)s)" -msgstr "Konvertuj knjigu %(num)d od %(total)d (%(title)s)" +msgstr "Пребаци књигу %(num)d од %(total)d (%(title)s)" #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:225 msgid "Could not convert some books" -msgstr "Nisam uspeo da konvertujem neke knjige" +msgstr "Нисам успео да конвертујем неке књиге." #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:226 @@ -16064,74 +16226,74 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:136 msgid "Queueing books for bulk conversion" -msgstr "Stavljam knjige u red čekanja za masovnu konverziju" +msgstr "Стављам књиге у ред чекања за масовно претварање" #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:199 msgid "Queueing " -msgstr "Stavljam u red za čekanje " +msgstr "Стављам у ред за чекање. " #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:200 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " -msgstr "Preuzmi vesti sa " +msgstr "Преузми вести са " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" -msgstr "Konvertuj postojeće" +msgstr "Претвори постојеће" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -"Ove knjige su već konvertovane u format %s. Da li želite da ih ponovo " -"konvertujete?" +"Ове књиге су већ претворене у формат %s. Да ли желите да их поново " +"претворите?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" -msgstr "Pošaljite &donaciju da podržite razvoj calibre programa" +msgstr "&Дарујте да подржите развој calibre програма" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" -msgstr "V&rati na ekran" +msgstr "&Поврати" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" -msgstr "Isključi pov&ezani uređaj" +msgstr "Искључи пов&езани уређај." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" -msgstr "Test način rada" +msgstr "Режим исправљања грешака" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " "log will be available in the file: %s<p>The log will be displayed " "automatically." msgstr "" -"Pokrenuli ste calibre u test načinu rada. Kada završite rad s programom, " -"izveštaj o radu će biti u fajlu: %s<p>Sadržaj ovog fajlaće biti prikazan " -"automatski." +"Покренули сте calibre у тест начину рада. Када завршите рад с програмом, " +"извештај о раду ће бити у датотеци: %s<p>Садржај ове датотеке ће бити " +"приказан аутоматски." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -16139,7 +16301,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -16147,45 +16309,45 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" -msgstr "Greška u konverziji" +msgstr "Грешка претварања" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" -msgstr "Recept je isključen" +msgstr "Рецепт је искључен." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" -msgstr "<b>Neuspelo</b>" +msgstr "<b>Неуспело</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -"Još uvek ima aktivnih poslova. Da li ste sigurni da želite da prekinete rad?" +"Још увек има активних послова. Да ли сте сигурни да желите да прекинете рад?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -" komunicira sa uređajem!<br>\n" -" Prekid rada može dovesti do neispravnih podataka na " -"uređaju.<br>\n" -" Da li ste sigurni da želite da prekinete rad?" +" комуницира са уређајем!<br>\n" +" Прекид рада може довести до неисправних података на " +"уређају.<br>\n" +" Да ли сте сигурни да желите да прекинете рад?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." msgstr "" -"će nastaviti da radi kao sistemska ikona. Da prekinete rad izaberite " -"<b>Izlaz</b> u meniju." +"ће наставити да ради као у системској палети. Да прекинете рад изаберите " +"<b>Излаз</b> у изборнику." #: /home/kovid/work/calibre/src/calibre/gui2/update.py:74 #, python-format @@ -16196,15 +16358,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/update.py:80 msgid "Update available!" -msgstr "Na raspolaganju je nova verzija!" +msgstr "Доступне су исправке!" #: /home/kovid/work/calibre/src/calibre/gui2/update.py:85 msgid "Show this notification for future updates" -msgstr "Prikaži ovo obaveštenje i za buduće nove verzije" +msgstr "Прикажи ово обавештење и за будуће нове верзије." #: /home/kovid/work/calibre/src/calibre/gui2/update.py:90 msgid "&Get update" -msgstr "&Preuzmi novu verziju" +msgstr "&Преузми исправке." #: /home/kovid/work/calibre/src/calibre/gui2/update.py:94 msgid "Update &plugins" @@ -16217,7 +16379,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/update.py:156 msgid "Update found" -msgstr "Pronađena je novija verzija" +msgstr "Пронађена је новија верзија." #: /home/kovid/work/calibre/src/calibre/gui2/update.py:159 msgid "updated plugins" @@ -16237,104 +16399,104 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" -msgstr "Promeni oznaku" +msgstr "Уреди обележивач" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" -msgstr "Novi naziv za oznaku:" +msgstr "Нови назив за ознаку:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" -msgstr "Izvezi oznake" +msgstr "Извези обележиваче" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" -msgstr "Sačuvane oznake (*.pickle)" +msgstr "Сачуване ознаке (*.pickle)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" -msgstr "Uvezi oznake" +msgstr "Увези обележиваче" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" -msgstr "Pickle oznake (*.pickle)" +msgstr "Pickled обележивачи (*.pickle)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:61 msgid "Bookmark Manager" -msgstr "Upravljanje oznakama" +msgstr "Менаџер обележивача" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:62 msgid "Actions" -msgstr "Akcije" +msgstr "Акције" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:63 msgid "Edit" -msgstr "Uredi" +msgstr "Уреди" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:65 #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:676 msgid "Reset" -msgstr "Poništi" +msgstr "Поново постави" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:66 msgid "Export" -msgstr "Izvezi" +msgstr "Извези" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:67 msgid "Import" -msgstr "Uvezi" +msgstr "Увези" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:185 msgid "Configure Ebook viewer" -msgstr "Podesi čitač e-knjiga" +msgstr "Подеси читач е-књига." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:186 msgid "&Font options" -msgstr "Opcije za &vrstu slova" +msgstr "Избор за &врсту слова" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:187 msgid "Se&rif family:" -msgstr "Se&rifna vrsta slova" +msgstr "Se&rif врста слова" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:188 msgid "&Sans family:" -msgstr "Bez-&serifna vrsta slova" +msgstr "&Sans врста слова:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:189 msgid "&Monospace family:" -msgstr "Šta&mpana slova" +msgstr "Шта&мпана слова:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:190 msgid "&Default font size:" -msgstr "Po&drazumevana veličina slova" +msgstr "По&дразумевана величина слова." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:209 msgid " px" -msgstr " štamparskih tačaka" +msgstr " px" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:192 msgid "Monospace &font size:" -msgstr "Veličina štampanih &slova" +msgstr "Величина штампаних &слова:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:194 msgid "S&tandard font:" -msgstr "S&tandardna vrsta slova:" +msgstr "&Стандардни словолик:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:195 msgid "Serif" -msgstr "Serifni" +msgstr "Serif" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:196 msgid "Sans-serif" -msgstr "Bez-serifni" +msgstr "Sans-serif" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:197 msgid "Monospace" -msgstr "Štampana" +msgstr "једноширински" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:198 msgid "Remember last used &window size and layout" @@ -16342,42 +16504,42 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:199 msgid "Remember the ¤t page when quitting" -msgstr "Zapamti te&kuću stranu na završetku rada" +msgstr "Запамти те&кућу страну на завршетку рада." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:200 msgid "H&yphenate (break line in the middle of large words)" -msgstr "Hifeniraj (prelomi red u sredini dugačkih reči)" +msgstr "Споји цртицом (преломи ред у средини дугачких речи)." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:201 msgid "" "The default language to use for hyphenation rules. If the book does not " "specify a language, this will be used." msgstr "" -"Podrazumevani jezik za hifenaciona pravila. Ako knjiga ne definiše poseban " -"jezik, biće korišćen ovaj." +"Подразумевани језик за правила спајања цртицом. Ако књига не дефинише " +"посебан језик, биће коришћен овај." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:202 msgid "Default &language for hyphenation:" -msgstr "Podrazumevani &jezik za hifenaciju" +msgstr "Подразумевани &језик за растављање речи" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:203 msgid "&Resize images larger than the viewer window (needs restart)" -msgstr "Smanji slike veće od p&rozora (zahteva ponovno pokretanje programa)" +msgstr "Смањи слике веће од п&розора (захтева поновно покретање програма)." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:204 msgid "Page flip &duration:" -msgstr "Trajanje &animacije okretanja strane:" +msgstr "Трајање &анимације окретања стране:" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:205 msgid "disabled" -msgstr "isključeno" +msgstr "искључен" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:207 msgid "Mouse &wheel flips pages" -msgstr "Točak na &mišu okreće strane" +msgstr "Точак на &мишу окреће стране." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -16400,19 +16562,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:214 msgid "%" -msgstr "" +msgstr "%" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:215 msgid "&General" -msgstr "&Opšte" +msgstr "&Опште" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:216 msgid "Double click to change a keyboard shortcut" -msgstr "Kliknite dva puta da promenite prečice" +msgstr "Кликните два пута да промените пречице." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:217 msgid "&Keyboard shortcuts" -msgstr "&Prečice" +msgstr "&Пречице" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:218 msgid "" @@ -16420,414 +16582,414 @@ msgid "" "For examples, click <a " "href=\"http://www.mobileread.com/forums/showthread.php?t=51500\">here</a>." msgstr "" -"<p>CSS stil koji će biti korišćen za određivanje izgleda knjiga. Za primere " -"kliknite <a " -"href=\"http://www.mobileread.com/forums/showthread.php?t=51500\">ovde</a>." +"<p>CSS стил који ће бити коришћен за одређивање изгледа књига. За примере " +"кликните <a " +"href=\"http://www.mobileread.com/forums/showthread.php?t=51500\">овде</a>." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:219 msgid "User &Stylesheet" -msgstr "Korisnički &stil" +msgstr "Кориснички &стил." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/dictionary.py:53 msgid "No results found for:" -msgstr "Ništa nije pronađeno za:" +msgstr "Ништа није пронађено за:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" -msgstr "Opcije za podešavanje čitača e-knjiga" +msgstr "Избор за подешавање читача е-књига." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" -msgstr "Zapamti poslednje korišćenu veličinu prozora" +msgstr "Запамти последње коришћену величину прозора." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -"Postavi korisnički CSS stil. Ovu opciju možete koristiti da podesite izgled " -"svih knjiga." - -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 -msgid "Resize images larger than the viewer window to fit inside it" -msgstr "Smanji velike slike kako bi stale u prozor" +"Постави кориснички CSS стил. Ову могућност можете користити да подесите " +"изглед свих књига." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +msgid "Resize images larger than the viewer window to fit inside it" +msgstr "Смањи велике слике како би стале у прозор." + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" -msgstr "Hifeniraj tekst" +msgstr "Споји цртицом текст" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" -msgstr "Podrazumevani jezik za hifenaciona pravila" +msgstr "Подразумевани језик за правила прелома речи." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" -msgstr "Sačuvaj trenutnu poziciju u dokumentu pri završetku rada" +msgstr "Сачувај тренутну позицију у документу при завршетку рада." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" -msgstr "Točak na mišu će okretati strane" +msgstr "Точак на мишу ће окретати стране." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -"Vreme trajanja animacije okretanja strane, u sekundama. Podrazumeva se pola " -"sekunde." +"Време трајања анимације окретања стране, у секундама. Подразумева се пола " +"секунде." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" -msgstr "Opcije za vrstu slova" +msgstr "Могућности словолика." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" -msgstr "Familija serifnih slova" +msgstr "Фамилија serif слова" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" -msgstr "Familija bez-serifnih slova" - -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 -msgid "The monospaced font family" -msgstr "Familija štampanih slova" +msgstr "Фамилија sans-serif слова" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 -msgid "The standard font size in px" -msgstr "Standardna veličina slova u px" +msgid "The monospaced font family" +msgstr "Фамилија штампаних слова." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 -msgid "The monospaced font size in px" -msgstr "Veličina štampanih slova u px" +msgid "The standard font size in px" +msgstr "Стандардна величина слова у px" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 -msgid "The standard font type" -msgstr "Standardna vrsta slova" +msgid "The monospaced font size in px" +msgstr "Величина штампаних слова у px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 +msgid "The standard font type" +msgstr "Стандардна врста слова." + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" -msgstr "&Pronađi u rečniku" +msgstr "&Пронађи у речнику." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." -msgstr "Idi na..." +msgstr "Иди на..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" -msgstr "Sledeći odeljak" +msgstr "Следећи одељак" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" -msgstr "Prethodni odeljak" +msgstr "Претходни одељак" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" -msgstr "Početak dokumenta" +msgstr "Почетак документа." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" -msgstr "Kraj dokumenta" +msgstr "Крај документа." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" -msgstr "Početak odeljka" +msgstr "Почетак одељка." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" -msgstr "Kraj odeljka" +msgstr "Крај одељка." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:12 msgid "Scroll to the next page" -msgstr "Pređi na sledeću stranu" +msgstr "Пређи на следећу страну." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:15 msgid "Scroll to the previous page" -msgstr "Vrati se na prethodnu stranu" +msgstr "Врати се на претходну страну." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:18 msgid "Scroll to the next section" -msgstr "Pređi na sledeći odeljak" +msgstr "Пређи на следећи одељак." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:21 msgid "Scroll to the previous section" -msgstr "Vrati se na prethodni odeljak" +msgstr "Врати се на претходни одељак." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:24 msgid "Scroll to the bottom of the section" -msgstr "Skoči na kraj odeljka" +msgstr "Скочи на крај одељка." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:27 msgid "Scroll to the top of the section" -msgstr "Vrati se na početak odeljka" +msgstr "Врати се на почетак одељка." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:30 msgid "Scroll to the end of the document" -msgstr "Skoči na kraj dokumenta" +msgstr "Скочи на крај документа." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:33 msgid "Scroll to the start of the document" -msgstr "Vrati se na početak dokumenta" +msgstr "Врати се на почетак документа." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:36 msgid "Scroll down" -msgstr "Spusti se niže" +msgstr "Помери наниже" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:39 msgid "Scroll up" -msgstr "Vrati se više" +msgstr "Помери навише" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:42 msgid "Scroll left" -msgstr "Pomeri levo" +msgstr "Клизај улево" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/keys.py:45 msgid "Scroll right" -msgstr "Pomeri desno" +msgstr "Клизај удесно" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" -msgstr "Format knjige" +msgstr "Формат књиге." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" -msgstr "Pozicija u knjizi" +msgstr "Позиција у књизи." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -"Skoči na referencu. Da biste dobili broj reference iskoristite način rada s " -"referencama." +"Скочи на референцу. Да бисте добили број референце искористите начин рада с " +"референцама." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" -msgstr "Traži tekst u knjizi" +msgstr "Тражи текст у књизи." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" -msgstr "Pregled pred štampanje" +msgstr "Преглед пре штампања" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" -msgstr "Poveži se sa dict.org da pronađeš: <b>%s</b>…" +msgstr "Повежи се са dict.org да пронађеш: <b>%s</b>…" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" -msgstr "Izaberi e-knjigu" +msgstr "Изабери е-књигу" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" -msgstr "E-knjige" +msgstr "Е-књиге" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" -msgstr "" +msgstr "мањи" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" -msgstr "Nije pronađeno ništa za: %s" +msgstr "Није пронађено ништа за: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." -msgstr "Učitavam izlog..." +msgstr "Учитавам излог..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" -msgstr "Predstavljam %s" +msgstr "Представљам %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" -msgstr "Oznaka #%d" +msgstr "Обележивач #%d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" -msgstr "Dodaj oznaku" - -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 -msgid "Enter title for bookmark:" -msgstr "Unesi naziv za oznaku" +msgstr "Додај обележивач" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 -msgid "Manage Bookmarks" -msgstr "Uredi oznake" +msgid "Enter title for bookmark:" +msgstr "Unesi naziv za обележивач." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 -msgid "Loading ebook..." -msgstr "Učitavam e-knjigu..." +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 +msgid "Manage Bookmarks" +msgstr "Уреди обележиваче." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +msgid "Loading ebook..." +msgstr "Учитавам е-књигу..." + +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" -msgstr "Nisam uspeo da otvorim e-knjigu" +msgstr "Нисам успео да отворим е-књигу." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" -msgstr "Opcije za kontrolu čitača e-knjiga" +msgstr "Могућности за контролу читача е-књига." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -"Ako je naveden, prozor čitača će pokušati da pri pokretanju dođe u prvi plan." +"Ако је наведен, прозор читача ће покушати да при покретању дође у први план." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -"Ako je navedeno, prozor za čitanje će se pri pokretanju otvoriti preko celog " -"ekrana." +"Ако је наведено, прозор за читање ће се при покретању отворити преко целог " +"екрана." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" -msgstr "Prikaži javascript upozorenja i poruke na konzoli" +msgstr "Прикажi javascript упозорења и поруке на конзоли." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" "View an ebook.\n" msgstr "" -"%prog [opcije] fajl\n" +"%prog [опције] датотека\n" "\n" -"Pregledaj e-knjigu.\n" +"Прегледај е-књигу.\n" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:189 msgid "E-book Viewer" -msgstr "Čitač e-knjiga" +msgstr "Читач е-књига." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:190 msgid "Close dictionary" -msgstr "Zatvori rečnik" +msgstr "Затвори речник." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:192 msgid "toolBar" -msgstr "Traka sa alatkama" +msgstr "Алатна трака" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:195 msgid "Next page" -msgstr "Sledeća strana" +msgstr "Следећа страна" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:196 msgid "Previous page" -msgstr "Prethodna strana" +msgstr "Претходна страна" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:197 msgid "Font size larger" -msgstr "Povećaj slova" +msgstr "Повећај слова." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:198 msgid "Font size smaller" -msgstr "Smanji slova" +msgstr "Смањи слова." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:202 msgid "Find next" -msgstr "Nađi sledeće" +msgstr "Нађи следеће" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:203 msgid "Find next occurrence" -msgstr "Nađi sledeće" +msgstr "Нађи следећи случај." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:207 msgid "Reference Mode" -msgstr "Način rada s referencama" +msgstr "Начин рада с референцама." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:208 msgid "Bookmark" -msgstr "Oznaka" +msgstr "Обележивач" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:209 msgid "Toggle full screen" -msgstr "Uključi/isključi prikaz na celom ekranu" +msgstr "Укључи/искључи приказ на целом екрану." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:210 msgid "Print" -msgstr "Štampaj" +msgstr "Одштампај" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:211 msgid "Find previous" -msgstr "Nađi prethodno" +msgstr "Нађи претходно" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:212 msgid "Find previous occurrence" -msgstr "Pronađi prethodno pojavljivanje" +msgstr "Пронађи претходно појављивање." #: /home/kovid/work/calibre/src/calibre/gui2/viewer/printing.py:114 msgid "Print eBook" -msgstr "Štampaj e-knjigu" +msgstr "Штампај е-књигу." #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:104 msgid "Test name invalid" @@ -16842,19 +17004,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:995 msgid "Drag to resize" -msgstr "Povuci za promenu veličine" +msgstr "Повуци за промену величине." #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1030 msgid "Show" -msgstr "Prikaži" +msgstr "Прикажи" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1037 msgid "Hide" -msgstr "Sakrij" +msgstr "Сакриј" #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:1074 msgid "Toggle" -msgstr "Prebaci" +msgstr "Пребаци" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:501 #, python-format @@ -16865,16 +17027,16 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:562 msgid "Moving library..." -msgstr "Premeštam biblioteku..." +msgstr "Премештам библиотеку..." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:578 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:579 msgid "Failed to move library" -msgstr "Nisam uspeo da premestim biblioteku" +msgstr "Нисам успео да преместим библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:633 msgid "Invalid database" -msgstr "Neispravna baza podataka" +msgstr "Неисправна база података." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:634 #, python-format @@ -16885,11 +17047,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:645 msgid "Could not move library" -msgstr "Nisam uspeo da premestim biblioteku" +msgstr "Нисам успео да преместим библиотеку." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:729 msgid "Select location for books" -msgstr "Izaberite putanju za knjige" +msgstr "Изаберите путању за књиге." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:742 #, python-format @@ -16901,32 +17063,32 @@ msgstr "" msgid "" "You must choose an empty folder for the calibre library. %s is not empty." msgstr "" -"Morate izabrati prazan direktorijum za calibre biblioteku. %s nije prazan." +"Морате изабрати празна фасцикла за calibre библиотеку. %s није празан." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:841 msgid "&Next >" -msgstr "" +msgstr "&Даље >" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:842 msgid "< &Back" -msgstr "" +msgstr "< &Назад" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:843 #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:667 msgid "Cancel" -msgstr "" +msgstr "Откажи" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:844 msgid "&Finish" -msgstr "" +msgstr "&Заврши" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:845 msgid "Commit" -msgstr "" +msgstr "Пошаљи" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:850 msgid "welcome wizard" -msgstr "čarobnjak za dobrodošlicu" +msgstr "чаробњак за добродошлицу." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:55 @@ -16935,7 +17097,7 @@ msgstr "čarobnjak za dobrodošlicu" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:55 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:47 msgid "Welcome to calibre" -msgstr "Dobrodošli u calibre" +msgstr "Добродошли у calibre." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 @@ -16943,15 +17105,15 @@ msgstr "Dobrodošli u calibre" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:48 msgid "The one stop solution to all your e-book needs." -msgstr "Jedinstveno rešenje za sve vaše potrebe vezane za e-knjige." +msgstr "Јединствено решење за све ваше потребе везане за е-књиге." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:57 msgid "&Manufacturers" -msgstr "&Proizvođači" +msgstr "&Произвођачи" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:58 msgid "&Devices" -msgstr "&Uređaji" +msgstr "&Уређаји" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:49 #, python-format @@ -16959,16 +17121,16 @@ msgid "" "<h2>Congratulations!</h2> You have successfully setup calibre. Press the %s " "button to apply your settings." msgstr "" -"<h2>Čestitamo!</h2> Uspešno ste podesili calibre. Pritisnite dugme %s da " -"aktivirate ova podešavanja." +"<h2>Честитамо!</h2> Успешно сте подесили calibre. Притисните дугме %s да " +"активирате ова подешавања." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:50 msgid "" "<h2>Demo videos</h2>Videos demonstrating the various features of calibre are " "available <a href=\"http://calibre-ebook.com/demo\">online</a>." msgstr "" -"<h2>Demo snimci</h2>Snimci koji demonstriraju različite funkcije programa " -"calibre su vam na raspolaganju na <a href=\"http://calibre-" +"<h2>Демо снимци</h2>Снимци који демонстрирају различите функције програма " +"calibre су вам на располагању на <a href=\"http://calibre-" "ebook.com/demo\">Internetu</a>." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:51 @@ -16985,32 +17147,28 @@ msgid "" "button below. You will also have to register your gmail address in your " "Amazon account." msgstr "" -"<p>calibre može da automatski šalje knjige na vaš Kindle elektronskom " -"poštom. Da biste to omogućili podesite donje opcije. Najlakše je da otvorite " -"besplatan <a href=\"http://gmail.com\">gmail nalog</a> i kliknete na dugme " -"Koristi gmail. Ovu adresu ćete morati da registrujete i u vašem Amazon " -"nalogu." +"<p>calibre може да аутоматски шаље књиге на ваш Kindle електронском поштом. " +"Да бисте то омогућили подесите доње могућности. Најлакше је да отворите " +"бесплатан <a href=\"http://gmail.com\">gmail налог</a> и кликнете на дугме " +"Користи gmail. Ову адресу ћете морати да региструјете и у вашем Amazon " +"налогу." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:50 msgid "&Kindle email:" -msgstr "&Kindle elektronska pošta:" +msgstr "&Kindle електронска пошта:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:57 msgid "Choose your &language:" -msgstr "Izaberite &jezik:" +msgstr "Изаберите &језик:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:58 msgid "" "<p>Choose a location for your books. When you add books to calibre, they " "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -"<p>Izaberite lokaciju za vaše knjige. Kada budete dodavali knjige u calibre " -"one će biti smeštene ovde. Izaberite <b>prazan direktorijum</b> za novu " -"calibre biblioteku:" - -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "&Promeni" +"<p>Изаберите локацију за ваше књиге. Када будете додавали књиге у calibre " +"оне ће бити смештене овде. Изаберите <b>празну фасциклу</b> за нову calibre " +"библиотеку:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" @@ -17018,8 +17176,8 @@ msgid "" "location. If a calibre library already exists at the new location, calibre " "will switch to using it." msgstr "" -"Ako već imate calibre biblioteku ona će biti kopirana na novo mesto. Ako " -"tamo već postoji biblioteka calibre će nastaviti da je koristi." +"Ако већ имате calibre библиотеку она ће бити копирана на ново место. Ако " +"тамо већ постоји библиотека calibre ће наставити да је користи." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:34 #, python-format @@ -17028,38 +17186,38 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:39 msgid "Sending..." -msgstr "Šaljem..." +msgstr "Шаљем..." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:44 msgid "Mail successfully sent" -msgstr "Pošta je uspešno poslata" +msgstr "Пошта је успешно послата." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:59 msgid "Setup sending email using" -msgstr "Podesi slanje elektronske pošte korišćenjem" +msgstr "Подеси слање електронске поште коришћењем" #: /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 <a href=\"http://{url}\">http://{url}</a>. {extra}" msgstr "" -"Ako nemate nalog, možete se prijaviti za novu besplatnu {name} adresu na <a " +"Ако немате налог, можете се пријавити за нову бесплатну адресу на <a " "href=\"http://{url}\">http://{url}</a>. {extra}" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:68 #, python-format msgid "Your %s &email address:" -msgstr "Vaša %s &elektronska adresa" +msgstr "Ваша %s &електронска адреса." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:69 #, python-format msgid "Your %s &username:" -msgstr "Vaše %s &korisničko ime:" +msgstr "Ваше %s &корисничко име:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:70 #, python-format msgid "Your %s &password:" -msgstr "Vaša %s &lozinka:" +msgstr "Ваша %s &лозинка:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:89 #, python-format @@ -17068,17 +17226,17 @@ msgid "" "your %s email address to the allowed email addresses in your Amazon.com " "Kindle management page." msgstr "" -"Ako nameravate da korisite elektronsku poštu da šaljete knjige na vaš " -"Kindle, ne zaboravite da dodate vašu %s elektronsku adresu na vašoj Amazon " -"Kindle internet stranici" +"Ако намеравате да корисите електронску пошту да шаљете књиге на ваш Kindle, " +"не заборавите да додате вашу %s електронску адресу на вашој Amazon Kindle " +"интернет страници." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:95 msgid "Setup" -msgstr "Podešavanje" +msgstr "Подешавање" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:102 msgid "Incorrect username" -msgstr "" +msgstr "Погрешно корисничко име" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:103 #, python-format @@ -17105,11 +17263,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:232 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:237 msgid "Bad configuration" -msgstr "Loša konfiguracija" +msgstr "Лоша конфигурација." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:222 msgid "You must set the From email address" -msgstr "Morate postaviti elektronsku adresu pošiljaoca" +msgstr "Морате поставити електронску адресу пошиљаоца." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:233 msgid "" @@ -17129,74 +17287,76 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:124 msgid "Send email &from:" -msgstr "&Pošiljalac:" +msgstr "&Пошиљалац:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:125 msgid "" "<p>This is what will be present in the From: field of emails sent by " "calibre.<br> Set it to your email address" msgstr "" -"<p>Ovo će se naći u From: polju poruka koje će calibre slati.<br> Ovde " -"navedite svoju elektronsku adresu" +"<p>Ово ће се наћи у пољу ОД: порука које ће calibre слати.<br> Овде " +"наведите своју електронску адресу." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:126 msgid "" "<p>A mail server is useful if the service you are sending mail to only " "accepts email from well know mail services." msgstr "" -"<p>Server za elektronsku poštu je koristan ako onaj kome šaljete poštu " -"prihvata poruke samo sa dobro poznatih servisa elektronske pošte." +"<p>Послужитељ за електронску пошту је користан ако онај коме шаљете пошту " +"прихвата поруке само са добро познатих сервиса електронске поште." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:127 msgid "Mail &Server" -msgstr "&Server elektronske pošte" +msgstr "&Послужитељ електронске поште" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:128 msgid "calibre can <b>optionally</b> use a server to send mail" msgstr "" -"calibre može <b>opciono</b> da koristi server za slanje elektronskih poruka" +"calibre може <b>изборно</b> да користи послужитељ за слање електронских " +"порука." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:129 msgid "&Hostname:" -msgstr "&Server" +msgstr "&Име домаћина:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:130 msgid "The hostname of your mail server. For e.g. smtp.gmail.com" -msgstr "Naziv vašeg servera elektronske pošte. Na primer smtp.gmail.com" +msgstr "Назив вашег послужитеља електронске поште. На пример smtp.gmail.com" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:131 msgid "&Port:" -msgstr "&Port:" +msgstr "&Прикључак:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:132 msgid "" "The port your mail server listens for connections on. The default is 25" msgstr "" -"Port na kome vaš server elektronske pošte očekuje poruke. Podrazumeva se 25" +"Прикључак на коме ваш послужитељ електронске поште очекује поруке. " +"Подразумева се 25" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:134 msgid "Your username on the mail server" -msgstr "Vaše korisničko ime na serveru elektronske pošte" +msgstr "Ваше корисничко име на послужитељу електронске поште" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:136 msgid "Your password on the mail server" -msgstr "Vaša lozinka na serveru elektronske pošte" +msgstr "Ваша лозинка на послужитељу електронске поште" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:137 msgid "&Show" -msgstr "&Prikaži" +msgstr "&Прикажи" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:138 msgid "&Encryption:" -msgstr "Ši&frovanje:" +msgstr "Ши&фровање:" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:139 msgid "" "Use TLS encryption when connecting to the mail server. This is the most " "common." msgstr "" -"Koristi TLS šifrovanje u komunikaciji sa serverom elektronske pošte. Ovo je " -"najuobičajenija opcija." +"Користи TLS шифровање у комуникацији са послужитељом електронске поште. Ово " +"је најуобичајенија могућност." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:140 msgid "&TLS" @@ -17204,7 +17364,8 @@ msgstr "&TLS" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:141 msgid "Use SSL encryption when connecting to the mail server." -msgstr "Koristi SSL šifrovanje u komunikaciji sa serverom elektronske pošte." +msgstr "" +"Користи SSL шифровање у комуникацији са послужитељом електронске поште." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:142 msgid "&SSL" @@ -17212,23 +17373,23 @@ msgstr "&SSL" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:143 msgid "WARNING: Using no encryption is highly insecure" -msgstr "UPOZORENJE: Nekorišćenje enkripcije je veoma nebezbedno" +msgstr "УПОЗОРЕЊЕ: Некоришћење шифровања је веома небезбедно" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:144 msgid "&None" -msgstr "&Nijedna" +msgstr "&Ниједна" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:145 msgid "Use Gmail" -msgstr "Koristi Gmail" +msgstr "Користи Gmail" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:146 msgid "Use Hotmail" -msgstr "Koristi Hotmail" +msgstr "Користи Hotmail" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:147 msgid "&Test email" -msgstr "&Probna poruka" +msgstr "&Пробна порука." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:49 msgid "" @@ -17237,14 +17398,14 @@ msgid "" "directly on the device. To do this you have to turn on the calibre content " "server." msgstr "" -"<p>Ako koristite <a href=\"http://www.lexcycle.com/download\">Stanza</a> " -"program za čitanje na vašem iPhone/iTouch uređaju, možete pristupiti vašoj " -"calibre biblioteci direktno sa uređaja. Da biste ovo postigli uključite " -"calibre server sadržaja." +"<p>Ако користите <a href=\"http://www.lexcycle.com/download\">Stanza</a> " +"програм за читање на вашем iPhone/iTouch уређају, можете приступити вашој " +"calibre библиотеци директно са уређаја. Да бисте ово постигли укључите " +"calibre послужитељ садржаја." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:50 msgid "Turn on the &content server" -msgstr "Uključite &server sadržaja" +msgstr "Укључите &послужитељ садржаја." #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:51 msgid "" @@ -17255,19 +17416,19 @@ msgid "" "on your iPhone. Here myhostname should be the fully qualified hostname or " "the IP address of the computer calibre is running on." msgstr "" -"<p>Ne zaboravite da ostavite calibre da radi, jer server inače neće biti " -"aktivan.\n" -"<p>Stanza bi trebalo da automatski prepozna vašu biblioteku. Ako ne, " -"probajte da dodate URL http://mojhost:8080 kao novi katalog u Stanza čitač " -"na vašem iPhoneu. Ovde mojhost treba da bude puno ime ili IP adresa računara " -"na kojem ste pokrenuli calibre." +"<p>Не заборавите да оставите calibre да ради, јер послужитељ иначе неће бити " +"активан.\n" +"<p>Stanza би требало да аутоматски препозна вашу библиотеку. Ако не, " +"пробајте да додате URL http://mojhost:8080 као нови каталог у Stanza читач " +"на вашем iPhoneu. Овде име домаћина треба да буде пуно име или ИП адреса " +"рачунара на којем сте покренули calibre." #: /home/kovid/work/calibre/src/calibre/library/caches.py:163 #: /home/kovid/work/calibre/src/calibre/library/caches.py:596 #: /home/kovid/work/calibre/src/calibre/library/caches.py:610 #: /home/kovid/work/calibre/src/calibre/library/caches.py:620 msgid "checked" -msgstr "obeleženo" +msgstr "означено" #: /home/kovid/work/calibre/src/calibre/library/caches.py:163 #: /home/kovid/work/calibre/src/calibre/library/caches.py:596 @@ -17275,7 +17436,7 @@ msgstr "obeleženo" #: /home/kovid/work/calibre/src/calibre/library/caches.py:620 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:222 msgid "yes" -msgstr "da" +msgstr "да" #: /home/kovid/work/calibre/src/calibre/library/caches.py:165 #: /home/kovid/work/calibre/src/calibre/library/caches.py:595 @@ -17283,41 +17444,41 @@ msgstr "da" #: /home/kovid/work/calibre/src/calibre/library/caches.py:617 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:222 msgid "no" -msgstr "ne" +msgstr "не" #: /home/kovid/work/calibre/src/calibre/library/caches.py:165 #: /home/kovid/work/calibre/src/calibre/library/caches.py:595 #: /home/kovid/work/calibre/src/calibre/library/caches.py:607 #: /home/kovid/work/calibre/src/calibre/library/caches.py:617 msgid "unchecked" -msgstr "neobeleženo" +msgstr "неозначено" #: /home/kovid/work/calibre/src/calibre/library/caches.py:389 msgid "today" -msgstr "danas" +msgstr "данас" #: /home/kovid/work/calibre/src/calibre/library/caches.py:392 msgid "yesterday" -msgstr "juče" +msgstr "јуче" #: /home/kovid/work/calibre/src/calibre/library/caches.py:395 msgid "thismonth" -msgstr "ovog meseca" +msgstr "овог месеца" #: /home/kovid/work/calibre/src/calibre/library/caches.py:398 #: /home/kovid/work/calibre/src/calibre/library/caches.py:399 msgid "daysago" -msgstr "dana ranije" +msgstr "дана раније" #: /home/kovid/work/calibre/src/calibre/library/caches.py:597 #: /home/kovid/work/calibre/src/calibre/library/caches.py:614 msgid "blank" -msgstr "prazno" +msgstr "празно" #: /home/kovid/work/calibre/src/calibre/library/caches.py:597 #: /home/kovid/work/calibre/src/calibre/library/caches.py:614 msgid "empty" -msgstr "prazno" +msgstr "празно" #: /home/kovid/work/calibre/src/calibre/library/caches.py:598 msgid "Invalid boolean query \"{0}\"" @@ -17343,10 +17504,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" -"Izlazna polja za sortiranje.\n" -"Raspoloživa polja: author_sort, id, rating, size, timestamp, title.\n" -"Podrazumeva se: '%default'\n" -"Važi za: BIBTEX izlazni format" +"Излазна поља за разврставање.\n" +"Расположива поља: author_sort, id, rating, size, timestamp, title.\n" +"Подразумева се: '%default'\n" +"Важи за: BIBTEX излазни формат." #: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 #, python-format @@ -17356,10 +17517,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" -"Kreiraj citate za BIBTEX stavke.\n" -"Logička vrednost: True, False\n" -"Podrazumeva se: '%default'\n" -"Važi za: BIBTEX izlazni format" +"Креирај цитате за BIBTEX ставке.\n" +"Логичка вредност: True, False\n" +"Подразумева се: '%default'\n" +"Важи за: BIBTEX iзлазни формат." #: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 #, python-format @@ -17388,10 +17549,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" -"Izlaz za BibTeX konverziju.\n" -"Raspoloživi tipovi: utf8, cp1252, ascii.\n" -"Podrazumeva se: '%default'\n" -"Važi za: BIBTEX izlazni format" +"Излаз за BibTeX претварање.\n" +"Расположиви типови: utf8, cp1252, ascii.\n" +"Подразумева се: '%default'\n" +"Важи за: BIBTEX излазни формат." #: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 #, python-format @@ -17401,10 +17562,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" -"Opcije za BibTeX konverziju.\n" -"Raspoloživi tipovi: strict, replace, ignore, backslashreplace.\n" -"Podrazumeva se: '%default'\n" -"Važi za: BIBTEX izlazni form" +"Избор за BibTeX претварање.\n" +"Расположиви типови: strict, replace, ignore, backslashreplace.\n" +"Подразумева се: '%default'\n" +"Важи за: BIBTEX излазни форм." #: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 #, python-format @@ -17414,10 +17575,10 @@ msgid "" "Default: '%default'\n" "Applies to: BIBTEX output format" msgstr "" -"Ulazni tip za BibTeX katalog.\n" -"Raspoloživi tipovi: book, misc, mixed.\n" -"Podrazumeva se: '%default'\n" -"Važi za: BIBTEX izlazni form" +"Улазни тип за BibTeX каталог.\n" +"Расположиви типови: book, misc, mixed.\n" +"Подразумева се: '%default'\n" +"Важи за: BIBTEX излазни форм." #: /home/kovid/work/calibre/src/calibre/library/catalogs/csv_xml.py:32 #, python-format @@ -17447,9 +17608,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Naslov generisanog kataloga korišćen kao naslov u metapodacima.\n" -"Podrazumeva se: '%default'\n" -"Važi za: ePub, MOBI izlazne formate" +"Наслов генерисаног каталога коришћен као наслов у метаподацима.\n" +"Подразумева се: '%default'\n" +"Важи за: ePub, MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:45 #, python-format @@ -17469,10 +17630,10 @@ msgid "" "Default: '%default'\n" "Applies to ePub, MOBI output formats" msgstr "" -"polje:šablon koji određuje korisničko polje/sadržaj koje određuje koje " -"knjige će biti isključene.\n" -"Podrazumeva se: '%default'\n" -"Važi za ePub i MOBI izlazne formate" +"поље:шаблон који одређује корисничко поље/садржај које одређује које књиге " +"ће бити искључене.\n" +"Подразумева се: '%default'\n" +"Важи за ePub i MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:62 #, python-format @@ -17481,10 +17642,10 @@ msgid "" "Default: '%default' excludes bracketed tags, e.g. '[<tag>]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Regularni izraz koji opisuje etikete koje će biti izbegnute kao žanrovi.\n" -"Podrazumeva se: '%default' osim etiketa u uglastim zagradama, npr. " -"'[<etiketa>]'\n" -"Važi za: ePub, MOBI izlazne formate" +"Регуларни израз који описује етикете које ће бити избегнуте као жанрови.\n" +"Подразумева се: '%default' осим етикета у угластим заградама, нпр. " +"'[<етикета>]'\n" +"Важи за: ePub, MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:68 #, python-format @@ -17518,9 +17679,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Uključi odeljak 'Žanroviž u katalog.\n" -"Podrazumeva se: '%default'\n" -"Važi za ePub i MOBI izlazne formate" +"Укључи одељак 'Жанрови' у каталог.\n" +"Подразумева се: '%default'\n" +"Важи за ePub и MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:97 #, python-format @@ -17529,9 +17690,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Uključi sekciju 'Naslovi' u katalog.\n" -"Podrazumeva se: '%default'\n" -"Važi za: ePub, MOBI izlazne formate" +"Укључи секцију 'Наслови' у каталог.\n" +"Подразумева се: '%default'\n" +"Важи за: ePub, MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:104 #, python-format @@ -17540,9 +17701,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Uključi odeljak 'Serija' u katalog.\n" -"Podrazumava se: '%default'\n" -"Odnosi se na: ePub i MOBI izlazne formate" +"Укључи одељак 'Серија' у каталог.\n" +"Подразумава се: '%default'\n" +"Односи се на: ePub и MOBI излазне формате" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:111 #, python-format @@ -17551,9 +17712,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Uključi sekciju 'Nedavno dodato' u katalog.\n" -"Podrazumeva se: '%default'\n" -"Važi za: ePub, MOBI izlazne formate" +"Укључи секцију 'Недавно додато' у каталог.\n" +"Подразумева се: '%default'\n" +"Важи за: ePub, MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:118 #, python-format @@ -17562,9 +17723,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Korisničko polje koje sadrži belešku koja će biti dodata u zaglavlje Opis.\n" -"Podrazumeva se: '%default'\n" -"Važi za ePub i MOBI izlazne formate" +"Корисничко поље које садржи белешку која ће бити додата у заглавље Опис.\n" +"Подразумева се: '%default'\n" +"Важи за: ePub i MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:125 #, python-format @@ -17576,13 +17737,13 @@ msgid "" "Default: '%default'\n" "Applies to ePub, MOBI output formats" msgstr "" -"<korisničko polje>:[before|after]:[True|False] koje određuje:\n" -" <korisničko polje> Korisničko polje koje sadrži beleške koje će bit spojene " -"s Komentarima\n" -" [before|after] Mesto na koje će beleška biti priključena (pre/posle)\n" -" [True|False] - Da li će beleške biti razdvojene vodoravnom crtom (da/ne)\n" -"Podrazumeva se: '%default'\n" -"Važi za ePub i MOBI izlazne formate" +"<корисничко поље>:[before|after]:[True|False] које одређује:\n" +" <корисничко поље> Корисничко поље које садржи белешке које ће бит спојене с " +"Коментарима\n" +" [before|after] Место на које ће белешка бити прикључена (пре/после)\n" +" [True|False] - Да ли ће белешке бити раздвојене водоравном цртом (да/не)\n" +"Подразумева се: '%default'\n" +"Важи за ePub и MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:135 #, python-format @@ -17594,11 +17755,11 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"određuje izlazni profil. U nekim slučajevima izlazni profil je neophodan da " -"bi se optimizovao katalog na uređaju. Na primer, 'kindle' ili 'kindle_dx' će " -"kreirati Sadržaj u čijoj strukturi će se nalaziti Odeljci i Članci.\n" -"Podrazumeva se: '%default'\n" -"Važi za: ePub, MOBI izlazne formate" +"Одређује излазни профил. У неким случајевима излазни профил је неопходан да " +"би се оптимизовао каталог на уређају. На пример, 'kindle' или 'kindle_dx' ће " +"направити Садржај у чијој структури ће се налазити Одељци и Чланци.\n" +"Подразумева се: '%default'\n" +"Важи за: ePub, MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:142 #, python-format @@ -17607,9 +17768,9 @@ msgid "" "Default: '%default'\n" "Applies to ePub, MOBI output formats" msgstr "" -"polje:šablon koji označava da je knjiga pročitana.\n" -"Podrazumeva se: '%default'\n" -"Vaći za ePub i MOBI izlazne formate" +"поље:шаблон који означава да је књига прочитана.\n" +"Подразумева се: '%default'\n" +"Ваћи за ePub и MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:148 #, python-format @@ -17619,10 +17780,10 @@ msgid "" "Default: '%default'\n" "Applies to ePub, MOBI output formats" msgstr "" -"Predlog veličine (u inčima) za omot knjiga u katalogu:\n" -"Opseg: 1.0 - 2.0\n" -"Podrazumeva se: '%default'\n" -"Važi za ePub i MOBI izlazne formate" +"Предлог величине (у инчима) за омот књига у каталогу:\n" +"Опсег: 1.0 - 2.0\n" +"Подразумева се: '%default'\n" +"Важи за ePub и MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:156 #, python-format @@ -17631,9 +17792,9 @@ msgid "" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -"Etiketa koja određuje knjigu koja će biti prikazana u spisku želja.\n" -"Podrazumeva se: '%default'\n" -"Važi za: ePub i MOBI izlazne formate" +"Етикета која одређује књигу која ће бити приказана у списку жеља.\n" +"Подразумева се: '%default'\n" +"Важи за: ePub и MOBI излазне формате." #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:259 msgid "" @@ -17679,31 +17840,31 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/check_library.py:26 msgid "Invalid titles" -msgstr "Neispravni naslovi" +msgstr "Неважећи наслови." #: /home/kovid/work/calibre/src/calibre/library/check_library.py:27 msgid "Extra titles" -msgstr "Dodatni naslovi" +msgstr "Додатни наслови." #: /home/kovid/work/calibre/src/calibre/library/check_library.py:28 msgid "Invalid authors" -msgstr "Neispravni autori" +msgstr "Неважећи аутори." #: /home/kovid/work/calibre/src/calibre/library/check_library.py:29 msgid "Extra authors" -msgstr "Dodatni autori" +msgstr "Додатни аутори." #: /home/kovid/work/calibre/src/calibre/library/check_library.py:30 msgid "Missing book formats" -msgstr "Nedostajući formati knjiga" +msgstr "Недостајући формати књига." #: /home/kovid/work/calibre/src/calibre/library/check_library.py:31 msgid "Extra book formats" -msgstr "Dodatni formati knjiga" +msgstr "Додатни формати књига." #: /home/kovid/work/calibre/src/calibre/library/check_library.py:32 msgid "Unknown files in books" -msgstr "Nepoznati fajlovi u knjizi" +msgstr "Непознате датотеке у књизи." #: /home/kovid/work/calibre/src/calibre/library/check_library.py:33 msgid "Missing covers files" @@ -17715,15 +17876,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/check_library.py:35 msgid "Folders raising exception" -msgstr "Direktorijumi s greškom" +msgstr "Фасцикле с грешком." #: /home/kovid/work/calibre/src/calibre/library/cli.py:43 msgid "" "Path to the calibre library. Default is to use the path stored in the " "settings." msgstr "" -"Putanja do calibre biblioteke. Podrazumeva se da je to putanja navedena u " -"podešavanjima." +"Путања до calibre библиотеке. Подразумева се да је то путања наведена у " +"подешавањима." #: /home/kovid/work/calibre/src/calibre/library/cli.py:139 msgid "" @@ -17731,9 +17892,9 @@ msgid "" "\n" "List the books available in the calibre database.\n" msgstr "" -"%prog spisak [opcije]\n" +"%prog списак [могућности]\n" "\n" -"Spisak knjiga iz calibre biblioteke.\n" +"Списак књига из calibre библиотеке.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:146 #, python-format @@ -17744,11 +17905,11 @@ msgid "" "Default: %%default. The special field \"all\" can be used to select all " "fields. Only has effect in the text output format." msgstr "" -"Polja koja će biti prikazana kada se prikazuju knjige iz biblioteke. Treba " -"da bude zarezima razdvojena lista polja. \n" -"Raspoloživa polja: %s\n" -"Podrazumeva se: %%default. Možete koristiti poseban naziv polja \"all\" da " -"biste izabrali sva polja. Ovo ima uticaj samo na tekstualni izlazni format." +"Поља која ће бити приказана када се приказују књиге из библиотеке. Треба да " +"буде зарезима раздвојен списак поља. \n" +"Расположива поља: %s\n" +"Подразумева се: %%default. Можете користити посебан назив поља \"all\" да " +"бисте изабрали сва поља. Ово има утицај само на текстуални излазни формат." #: /home/kovid/work/calibre/src/calibre/library/cli.py:153 #, python-format @@ -17757,13 +17918,13 @@ msgid "" "Available fields: %s\n" "Default: %%default" msgstr "" -"Polje po kome će se sortirati rezultati.\n" -"Rapoloživa polja: %s\n" -"Podrazumeva se: %%default" +"Поље по коме ће се разврстати резултати.\n" +"Раположива поља: %s\n" +"Подразумева се: %%default" #: /home/kovid/work/calibre/src/calibre/library/cli.py:155 msgid "Sort results in ascending order" -msgstr "Sortiraj rezultate u rastućem redosledu" +msgstr "Разврстај резултате у растућем редоследу." #: /home/kovid/work/calibre/src/calibre/library/cli.py:157 msgid "" @@ -17771,43 +17932,43 @@ msgid "" "please see the search related documentation in the User Manual. Default is " "to do no filtering." msgstr "" -"Filtriraj rezultate koristeći upit za pretragu. Za format upita molim vas da " -"pogledate odgovarajući deo Korisničkog uputstva. Podrazumeva se da neće biti " -"filtriranja." +"Филтрирај резултате користећи упит за претрагу. За формат упита молим вас да " +"погледате одговарајући део Корисничког упутства. Подразумева се да неће бити " +"филтрирања." #: /home/kovid/work/calibre/src/calibre/library/cli.py:159 #: /home/kovid/work/calibre/src/calibre/library/cli.py:1086 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." -msgstr "Maksimalna širina reda u izlazu. Podrazumeva se širina ekrana." +msgstr "Највећа ширина реда у излазу. Подразумева се ширина екрана." #: /home/kovid/work/calibre/src/calibre/library/cli.py:160 msgid "The string used to separate fields. Default is a space." -msgstr "Znaci koji služe za razdvajanje polja. Podrazumeva se razmak." +msgstr "Знаци који служе за раздвајање поља. Подразумева се размак." #: /home/kovid/work/calibre/src/calibre/library/cli.py:161 msgid "" "The prefix for all file paths. Default is the absolute path to the library " "folder." msgstr "" -"Prefiks za sve putanje direktorijuma. Podrazumeva se apsolutna putanja do " -"direktorijuma koji sadrži biblioteku." +"Префикс за све путање. Подразумева се апсолутна путања до фасцикле која " +"садржи библиотеку." #: /home/kovid/work/calibre/src/calibre/library/cli.py:185 msgid "Invalid fields. Available fields:" -msgstr "Neispravna polja. Raspoloživa polja:" +msgstr "Неисправна поља. Расположива поља:" #: /home/kovid/work/calibre/src/calibre/library/cli.py:192 msgid "Invalid sort field. Available fields:" -msgstr "Neispravno polje za sortiranje. Raspoloživa polja:" +msgstr "Неисправно поље за разврставање. Расположива поља:" #: /home/kovid/work/calibre/src/calibre/library/cli.py:270 msgid "" "The following books were not added as they already exist in the database " "(see --duplicates option):" msgstr "" -"Sledeće knjige nisu dodate, jer već postoje u bazi podataka (vidi opciju --" +"Следеће књиге нису додате, јер већ постоје у бази података (види могућност--" "duplicates):" #: /home/kovid/work/calibre/src/calibre/library/cli.py:295 @@ -17818,35 +17979,35 @@ msgid "" "directories, see\n" "the directory related options below.\n" msgstr "" -"%prog add [opcije] fajl1 fajl2 fajl3 ...\n" +"%prog add [могућности] датотека1 датотека2 датотека3 ...\n" "\n" -"Dodaj navedene fajlove u biblioteku kao knjige. Možete navesti i " -"direktorijume, vidite\n" -"opcije za direktorijume navedene niže.\n" +"Додај наведене датотеке у библиотеку као књиге. Можете навести и " +"директоријуме, видите\n" +"могућности за директоријуме наведене ниже.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:303 msgid "" "Assume that each directory has only a single logical book and that all files " "in it are different e-book formats of that book" msgstr "" -"Podrazumevaj da svaki direktorijum sadrži samo jednu knjigu i da su svi " -"fajlovi u njemu samo različiti formati iste knjige." +"Подразумевај да сваки директоријум садржи само једну књигу и да су све " +"датотеке у њему само различити формати исте књиге." #: /home/kovid/work/calibre/src/calibre/library/cli.py:305 msgid "Process directories recursively" -msgstr "Rekurzivno obradi direktorijume" +msgstr "Рекурзивно обради директоријуме." #: /home/kovid/work/calibre/src/calibre/library/cli.py:307 msgid "" "Add books to database even if they already exist. Comparison is done based " "on book titles." msgstr "" -"Dodaj knjige u biblioteku čak i ako su već u njoj. Poređenje se vrši na " -"osnovu naslova." +"Додај књиге у библиотеку чак и ако су већ у њој. Поређење се врши на основу " +"наслова." #: /home/kovid/work/calibre/src/calibre/library/cli.py:309 msgid "Add an empty book (a book with no formats)" -msgstr "Dodaj praznu knjigu (knjigu bez ijednog formata)" +msgstr "Додај празну књигу (књигу без иједног формата)" #: /home/kovid/work/calibre/src/calibre/library/cli.py:311 msgid "Set the title of the added book(s)" @@ -17874,7 +18035,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:356 msgid "You must specify at least one file to add" -msgstr "Morate navesti bar jedan fajl za dodavanje" +msgstr "Морате навести бар једну датотеку за додавање." #: /home/kovid/work/calibre/src/calibre/library/cli.py:376 msgid "" @@ -17889,7 +18050,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:391 msgid "You must specify at least one book to remove" -msgstr "Morate navesti bar jednu knjigu za uklanjanje" +msgstr "Морате навести бар једну књигу за уклањање." #: /home/kovid/work/calibre/src/calibre/library/cli.py:412 msgid "" @@ -17899,19 +18060,19 @@ msgid "" "identified by id. You can get id by using the list command. If the format " "already exists, it is replaced.\n" msgstr "" -"%prog add_format [opcije] identifikator fajl_eknjige\n" +"%prog add_format [могућности] идентификатор датотеке_екњиге\n" "\n" -"Dodaj e-knjigu iz fajl_eknjige u raspoložive formate knjige određene " -"identifikatorom. Idenitifikatore možete dobiti korišćenjem komande list. " -"Ako format već postoji biće zamenjen novim.\n" +"Додај е-књигу из датотеке_екњиге у расположиве формате књиге одређене " +"идентификатором. Иденитификаторе можете добити коришћењем списка команди. " +"Ако формат већ постоји биће замењен новим.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:426 msgid "You must specify an id and an ebook file" -msgstr "Morate navesti i identifikator i fajl sa e-knjigom" +msgstr "Морате навести и идентификатор и датотеку са е-књигом" #: /home/kovid/work/calibre/src/calibre/library/cli.py:431 msgid "ebook file must have an extension" -msgstr "e-knjiga mora da ima ekstenziju" +msgstr "е-књига мора да има наставак" #: /home/kovid/work/calibre/src/calibre/library/cli.py:441 msgid "" @@ -17923,16 +18084,16 @@ msgid "" "EPUB. If the logical book does not have fmt available, do nothing.\n" msgstr "" "\n" -"%prog remove_format [opcije] idenitifikator fmt\n" +"%prog remove_format [могућности] иденитификатор fmt\n" "\n" -"Ukloni format fmt iz knjige određene identifikatorom. Identifikator možete " -"dobiti korišćenjem list komande. Fmt treba da bude ekstenzija kao na primer " -"LRF, ili TXT, ili EPUB. Ako knjiga nema odgovarajući format neće biti " -"izvršena nikakva akcija.\n" +"Уклони формат fmt из књиге одређене идентификатором. Идентификатор можете " +"добити коришћењем лист команде. Fmt треба да буде наставак као на пример " +"LRF, или TXT, или EPUB. Ако књига нема одговарајући формат неће бити " +"извршена никаква акција.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:457 msgid "You must specify an id and a format" -msgstr "Morate navesti identifikator i format" +msgstr "Морате навести идентификатор и формат." #: /home/kovid/work/calibre/src/calibre/library/cli.py:476 msgid "" @@ -17944,19 +18105,19 @@ msgid "" "id is an id number from the list command.\n" msgstr "" "\n" -"%prog show_metadata [opcije] identifikator\n" +"%prog show_metadata [могућности] идентификатор\n" "\n" -"Prikaži metapodatke iz calibre baze podataka za knjigu određenu " -"idenitifkatorom.\n" -"Identifikator je broj dobijen korišćenjem list komande.\n" +"Прикажи метаподатке из calibre базе података за књигу одређену " +"иденитифкатором.\n" +"Идентификатор је број добијен коришћењем лист команде.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:483 msgid "Print metadata in OPF form (XML)" -msgstr "Prikaži metapodatke u OPF obliku (XML)" +msgstr "Прикажи метаподатке у OPF облику (XML)" #: /home/kovid/work/calibre/src/calibre/library/cli.py:492 msgid "You must specify an id" -msgstr "Morate navesti identifikator" +msgstr "Морате навести идентификатор." #: /home/kovid/work/calibre/src/calibre/library/cli.py:508 msgid "" @@ -17971,18 +18132,18 @@ msgid "" "show_metadata command.\n" msgstr "" "\n" -"%prog set_metadata [opcije] identifikator /putanja/do/metapodataka.opf\n" +"%prog set_metadata [могућности] идентификатор /путања/до/метаподатака.opf\n" "\n" -"Postavi metapodatke iz calibre baze podataka za knjigu određenu " -"idenitifkatorom\n" -"iz OPF fajla metapodataka.opf. Identifikator je broj dobijen korišćenjem " -"list komande. Možete\n" -"dobiti osnovnu ideju o OPF formatu korišćenjem --as-opf opcije za\n" -"show_metadata komandu.\n" +"Постави метаподатке из calibre базе података за књигу одређену " +"иденитифкатором\n" +"из OPF датотетеке метаподатака.opf. Идентификатор је број добијен коришћењем " +"лист команде. Можете добити основну идеју о OPF формату коришћењем --as-opf " +"избора за\n" +"show_metadata команду.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:523 msgid "You must specify an id and a metadata file" -msgstr "Morate navesti identifikator i fajl sa metapodacima" +msgstr "Морате навести идентификатор и датотеку са метаподацима." #: /home/kovid/work/calibre/src/calibre/library/cli.py:543 msgid "" @@ -17994,32 +18155,32 @@ msgid "" "(in\n" "an opf file). You can get id numbers from the list command.\n" msgstr "" -"%prog export [opcije] identifikatori\n" +"%prog export [могућности] идентификатори\n" "\n" -"Izvezi na disk knjige određene identifikatorima (razdvojenim zarezima).\n" -"Ova operacija snima sve formate knjiga, naslovne strane i metapodatke (u\n" -"opf fajl). Identifikatore možete dobiti korišćenjem list komande.\n" +"Извези на диск књиге одређене идентификаторима (раздвојеним зарезима).\n" +"Ова операција чува све формате књига, насловне стране и метаподатке (у\n" +"opf датотеци). Идентификаторе можете добити коришћењем лист команде.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:551 msgid "Export all books in database, ignoring the list of ids." -msgstr "Izvezi sve knjige iz baze podataka ignorišući listu identifikatora." +msgstr "Извези све књиге из базе података занемаривши листу идентификатора." #: /home/kovid/work/calibre/src/calibre/library/cli.py:553 msgid "Export books to the specified directory. Default is" -msgstr "Izvezi knjige u navedeni direktorijum. Podrazumeva se" +msgstr "Извези књиге у наведени директоријум. Подразумева се" #: /home/kovid/work/calibre/src/calibre/library/cli.py:555 msgid "Export all books into a single directory" -msgstr "Izvezi sve knjige u isti direktorijum" +msgstr "Извези све књиге у исти директоријум." #: /home/kovid/work/calibre/src/calibre/library/cli.py:562 msgid "Specifying this switch will turn this behavior off." -msgstr "Navođenje ove opcije će sprečiti ovu akciju." +msgstr "Навођење ове могућности ће спречити ову акцију." #: /home/kovid/work/calibre/src/calibre/library/cli.py:585 #, python-format msgid "You must specify some ids or the %s option" -msgstr "Morate navesti neke identifikatore za opciju %s" +msgstr "Морате навести неке идентификаторе за могућност %s" #: /home/kovid/work/calibre/src/calibre/library/cli.py:598 msgid "" @@ -18031,20 +18192,20 @@ msgid "" "column.\n" "datatype is one of: {0}\n" msgstr "" -"%prog add_custom_column [opcije] etiketa naziv tip\n" +"%prog add_custom_column [могућност] етикета назив тип\n" "\n" -"Napravi kolonu. Etiketa je računaru razumljivo ime kolone. Trebalo\n" -"bi da ne sadrži praznine ili zareze. Naziv je ime kolone razumljivo " -"korisniku.\n" -"Tip je jedan on: {0}\n" +"Направи колону. Етикета је рачунару разумљиво име колоне. Требало\n" +"би да не садржи празнине или зарезе. Назив је име колоне разумљиво " +"кориснику.\n" +"Тип је један од: {0}\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:607 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -"Ova kolona čuva etikete kao podatke (tj. kao više vrednosti razdvojenih " -"zarezima). Ovo važi ako je tip tekst." +"Ова колона чува етикете као податке (тј. као више вредности раздвојених " +"зарезима). Ово важи ако је тип текст." #: /home/kovid/work/calibre/src/calibre/library/cli.py:611 msgid "" @@ -18052,13 +18213,13 @@ msgid "" "interpreted. This is a JSON string. For enumeration columns, use --" "display='{\"enum_values\":[\"val1\", \"val2\"]}'" msgstr "" -"Rečnik opcija za podešavanje načina interpretiranja podataka u ovoj koloni. " -"Ovo je JSON niz znakova. Za kolone enumeracije, koristite --" -"display='{\"enum_values\":[\"val1\", \"val2\"]}'" +"Речник опција за подешавање начина интерпретирања података у овој колони. " +"Ово је JSON низ знакова. За колоне набрајање, користите --" +"приказ='{\"enum_values\":[\"val1\", \"val2\"]}'" #: /home/kovid/work/calibre/src/calibre/library/cli.py:625 msgid "You must specify label, name and datatype" -msgstr "Morate navesti etiketu, naziv i tip." +msgstr "Морате навести етикету, назив и тип." #: /home/kovid/work/calibre/src/calibre/library/cli.py:687 msgid "" @@ -18071,11 +18232,11 @@ msgid "" " " msgstr "" "\n" -" %prog catalog /putanja/do/odredišta.(CSV|EPUB|MOBI|XML ...) [opcije]\n" +" %prog catalog /путања/до/одредишта.(CSV|EPUB|MOBI|XML ...) [могућности]\n" "\n" -" Izvezi katalog u formatu određenom ekstenzijom u putanja/do/odredišta.\n" -" Opcije određuju kako će stavke biti prikazane u generisanom izlaznom " -"katalogu.\n" +" Извези каталог у формату одређеним проширењем у путања/до/одредишта.\n" +" Могућности одређују како ће ставке бити приказане у генерисаном излазном " +"каталогу.\n" " " #: /home/kovid/work/calibre/src/calibre/library/cli.py:700 @@ -18084,9 +18245,9 @@ msgid "" "If declared, --search is ignored.\n" "Default: all" msgstr "" -"Zarezima razdvojena lista identifikatora za uključivanje u katalog.\n" -"Ako je navedena ignorisaće se opcija --search.\n" -"Podrazumeva se: svi" +"Зарезима раздвојена листа идентификатора за укључивање у каталог.\n" +"Ако је наведена занемариће се могућност --search.\n" +"Подразумева се: све" #: /home/kovid/work/calibre/src/calibre/library/cli.py:704 msgid "" @@ -18094,18 +18255,18 @@ msgid "" "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -"Filtriraj rezultate na osnovu upita za pretragu. Za format upita molim vas " -"da pogledate u odgovarajući odeljak Korisničkog uputstva.\n" -"Podrazumeva se: bez filtriranja" +"Филтрирај резултате на основу упита за претрагу. За формат упита молим вас " +"да погледате у одговарајући одељак Корисничког упутства.\n" +"Подразумева се: без филтрирања." #: /home/kovid/work/calibre/src/calibre/library/cli.py:710 #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:528 msgid "Show detailed output information. Useful for debugging" -msgstr "Prikaži detaljne informacije. Korisno za traženje grešaka" +msgstr "Прикажи детаљне информације. Корисно за тражење грешака." #: /home/kovid/work/calibre/src/calibre/library/cli.py:723 msgid "Error: You must specify a catalog output file" -msgstr "Greška: Morate navesti izlazni fajl za katalog" +msgstr "Грешка: Морате навести излазну датотеку за каталог." #: /home/kovid/work/calibre/src/calibre/library/cli.py:770 msgid "" @@ -18119,12 +18280,12 @@ msgid "" " " msgstr "" "\n" -" %prog set_custom [opcije] kolona id vrednost\n" +" %prog set_custom [могућности] колона ид вредност\n" "\n" -" Postavi vrednost korisničke kolone za knjigu određenu identifikatorom " -"id.\n" -" Možete dobiti spisak identifikatora korišćenjem komande list.\n" -" Možete dobiti spisak naziva korisničkih kolona korišćenjem komande\n" +" Постави вредност корисничке колоне за књигу одређену идентификатором " +"ид.\n" +" Можете добити списак идентификатора коришћењем команде лист.\n" +" Можете добити списак назива корисничких колона коришћењем команде\n" " custom_columns.\n" " " @@ -18133,12 +18294,12 @@ msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -"Ako kolona čuva više vrednosti, dodaj navedene vrednosti postojećim umesto " -"da budu zemenjene." +"Ако колона чува више вредности, додај наведене вредности постојећим уместо " +"да буду замењене." #: /home/kovid/work/calibre/src/calibre/library/cli.py:791 msgid "Error: You must specify a field name, id and value" -msgstr "Greška: Morate navesti naziv polja, identifikator i vrednost" +msgstr "Грешка: Морате навести назив поља, идентификатор и вредност." #: /home/kovid/work/calibre/src/calibre/library/cli.py:811 msgid "" @@ -18149,24 +18310,24 @@ msgid "" " " msgstr "" "\n" -" %prog custom_columns [opcije]\n" +" %prog custom_columns [могућности]\n" "\n" -" Spisak raspoloživih kolona. Prikaži nazive kolona i njihove " -"identifikatore.\n" +" Списак расположивих колона. Прикажи називе колона и њихове " +"идентификаторе.\n" " " #: /home/kovid/work/calibre/src/calibre/library/cli.py:817 msgid "Show details for each column." -msgstr "Prikaži detalje o svakoj koloni." +msgstr "Прикажи детаље о свакој колони." #: /home/kovid/work/calibre/src/calibre/library/cli.py:829 #, python-format msgid "You will lose all data in the column: %r. Are you sure (y/n)? " -msgstr "Izgubićete sve podatke iz kolone: %r. Da li ste sigurni (y/n)? " +msgstr "Изгубићете све податке из колоне: %r. Да ли сте сигурни (y/n)? " #: /home/kovid/work/calibre/src/calibre/library/cli.py:831 msgid "y" -msgstr "y" +msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:838 msgid "" @@ -18178,19 +18339,19 @@ msgid "" " " msgstr "" "\n" -" %prog remove_custom_columns [opcije] etiketa\n" +" %prog remove_custom_columns [могућности] етикета\n" "\n" -" Ukloni korisničku kolonu određenu etiketom. Možete videti spisak\n" -" raspoloživih kolona korišćenjem komande custom_columns.\n" +" Уклони корисничку колону одређену етикетом. Можете видети списак\n" +" расположивих колона коришћењем команде custom_columns.\n" " " #: /home/kovid/work/calibre/src/calibre/library/cli.py:845 msgid "Do not ask for confirmation" -msgstr "Nemoj da pitaš za odobrenje" +msgstr "Немој да питаш за одобрење." #: /home/kovid/work/calibre/src/calibre/library/cli.py:855 msgid "Error: You must specify a column label" -msgstr "Greška: Morate navesti naziv kolone" +msgstr "Грешка: Морате навести назив колоне." #: /home/kovid/work/calibre/src/calibre/library/cli.py:866 msgid "" @@ -18205,48 +18366,48 @@ msgid "" " " msgstr "" "\n" -" %prog saved_searches [opcije] lista\n" -" %prog saved_searches add naziv pretraga\n" -" %prog saved_searches remove naziv\n" +" %prog saved_searches [могућности] листа\n" +" %prog saved_searches add назив претрага\n" +" %prog saved_searches remove назив\n" "\n" -" Ažuriraj sačuvane pretrage u ovoj bazi potaga.\n" -" Ako pokušate da dodate upit s nazivom koji već postoji, on će\n" -" biti zemenjen.\n" +" Ажурирај сачуване претраге у овој бази претрага.\n" +" Ако покушате да додате упит с називом који већ постоји, он ће\n" +" бити земењен.\n" " " #: /home/kovid/work/calibre/src/calibre/library/cli.py:883 msgid "Error: You must specify an action (add|remove|list)" -msgstr "Greška: Morate navesti akciju (add|remove|list)" +msgstr "Грешка: Морате навести акцију (add|remove|list)" #: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "Name:" -msgstr "Naziv:" +msgstr "Назив:" #: /home/kovid/work/calibre/src/calibre/library/cli.py:892 msgid "Search string:" -msgstr "Niz znakova za pretragu:" +msgstr "Низ знакова за претрагу:" #: /home/kovid/work/calibre/src/calibre/library/cli.py:898 msgid "Error: You must specify a name and a search string" -msgstr "Greška: Morate navesti naziv i niz znakova za pretragu" +msgstr "Грешка: Морате навести назив и низ знакова за претрагу." #: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "added" -msgstr "dodato" +msgstr "додато" #: /home/kovid/work/calibre/src/calibre/library/cli.py:906 msgid "Error: You must specify a name" -msgstr "Greška: Morate navesti naziv" +msgstr "Грешка: Морате навести назив." #: /home/kovid/work/calibre/src/calibre/library/cli.py:909 msgid "removed" -msgstr "uklonjeno" +msgstr "уклоњено" #: /home/kovid/work/calibre/src/calibre/library/cli.py:913 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -"Greška: Akcija %s nije prepoznata. Mora biti jedna od: (add|remove|list)" +"Грешка: Акција %s није препозната. Мора бити једна од: (add|remove|list)" #: /home/kovid/work/calibre/src/calibre/library/cli.py:921 msgid "" @@ -18255,42 +18416,42 @@ msgid "" "Perform some checks on the filesystem representing a library. Reports are " "{0}\n" msgstr "" -"%prog check_library [opcije]\n" +"%prog check_library [могућности]\n" "\n" -"Izvrši neke provere u direktorijumima s bibliotekom. Izveštaji su {0}\n" +"Изврши неке провере у директоријумима с библиотеком. Извештаји су {0}\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:928 #: /home/kovid/work/calibre/src/calibre/library/cli.py:1078 msgid "Output in CSV" -msgstr "Izveštaj u CSV formatu" +msgstr "Извештај у CSV формату." #: /home/kovid/work/calibre/src/calibre/library/cli.py:931 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -"Zarezima razdvojena lista izveštaja.\n" -"Podrazumevano: all" +"Зарезима раздвојена листа извештаја.\n" +"Подразумевано: све" #: /home/kovid/work/calibre/src/calibre/library/cli.py:935 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -"Zarezima razdvojena lista ekstenzija koje će biti ignorisane.\n" -"Podrazumevano: all" +"Зарезима раздвојена листа проширења које ће бити занемарена.\n" +"Подразумевано: све" #: /home/kovid/work/calibre/src/calibre/library/cli.py:939 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -"Zarezima razdvojena lista imena koja će biti ignorisana.\n" -"Podrazumevano: all" +"Зарезима раздвојена листа имена која ће бити занемарена.\n" +"Подразумевано: све" #: /home/kovid/work/calibre/src/calibre/library/cli.py:969 msgid "Unknown report check" -msgstr "Provera za nepoznat izveštaj" +msgstr "Провера за непознат извештај." #: /home/kovid/work/calibre/src/calibre/library/cli.py:1003 msgid "" @@ -18306,19 +18467,19 @@ msgid "" "what is found in the OPF files.\n" " " msgstr "" -"%prog restore_database [opcije]\n" +"%prog restore_database [могућности]\n" "\n" -"Ponovo kreiraj ovu bazu podataka od metapodataka sačuvanih u OPF fajlovima\n" -"u svakom direktorijumu calibre biblioteke. Ovo je korisno ako vam se " -"pokvario\n" -"fajl metadata.db.\n" +"Поново направи ову базу података од метаподатака сачуваних у OPF датотекама\n" +"у сваком директоријуму calibre библиотеке. Ово је корисно ако вам се " +"покварио\n" +"датотеку metadata.db.\n" "\n" -"UPOZORENJE: Ova komanda kreira potpuno novu bazu podataka. Izgubićete sve\n" -"sačuvane pretrage, korisničke kategorije, priključke, uputstva za konverziju " -"pojedinih\n" -"knjiga, i sve korisničke recepte. Novi metapodaci će biti onoliko tačni " -"koliko su tačni\n" -"podaci u OPF fajlovima.\n" +"УПОЗОРЕЊЕ: Ова команда прави потпуно нову базу података. Изгубићете све\n" +"сачуване претраге, корисничке категорије, прикључке, упутства за претварање " +"појединих\n" +"књига, и све корисничке рецепте. Нови метаподаци ће бити онолико тачни " +"колико су тачни\n" +"подаци у OPF датотекама.\n" " " #: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 @@ -18326,8 +18487,8 @@ msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -"Zaista izvrši oporavak. Ova komanda neće biti pokrenuta ako ne izaberete ovu " -"opciju." +"Заиста изврши опоравак. Ова команда неће бити покренута ако не изаберете ову " +"могућност." #: /home/kovid/work/calibre/src/calibre/library/cli.py:1030 #, python-format @@ -18341,42 +18502,42 @@ msgid "" "Produce a report of the category information in the database. The\n" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -"%prog list_categories [opcije]\n" +"%prog list_categories [могућности]\n" "\n" -"Sačini izveštaj o kategorijama u bazi podataka. Ovi podaci\n" -"su identični onima prikazanim u prozoru sa etiketama.\n" +"Сачини извештај о категоријама у бази података. Ови подаци\n" +"су идентични онима приказаним у прозору са етикетама.\n" #: /home/kovid/work/calibre/src/calibre/library/cli.py:1075 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -"Ispiši samo broj stavki po kategoriji umesto broja po stavki u kategoriji" +"Испиши само број ставки по категорији уместо броја по ставки у категорији." #: /home/kovid/work/calibre/src/calibre/library/cli.py:1080 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -"Znak kojim će biti uokvirena kategorija u CSV načinu rada. Podrazumeva se " -"navodnik (\")." +"Знак којим ће бити уоквирена категорија у CSV начину рада. Подразумева се " +"наводник (\")." #: /home/kovid/work/calibre/src/calibre/library/cli.py:1083 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -"Zarezima razdvojena lista imena za pretraživanje kategorija.\n" -"Podrazumeva se: sve" +"Зарезима раздвојена листа имена за претраживање категорија.\n" +"Подразумева се: све" #: /home/kovid/work/calibre/src/calibre/library/cli.py:1089 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -"Niz znakova koji razdvaja polja u CSV načinu rada. Podrazumeva se zarez." +"Низ знакова који раздваја поља у CSV начину рада. Подразумева се зарез." #: /home/kovid/work/calibre/src/calibre/library/cli.py:1127 msgid "CATEGORY ITEMS" -msgstr "STAVKE U KATEGORIJI" +msgstr "СТАВКЕ У КАТЕГОРИЈИ" #: /home/kovid/work/calibre/src/calibre/library/cli.py:1200 #, python-format @@ -18390,54 +18551,54 @@ msgid "" "\n" "For help on an individual command: %%prog command --help\n" msgstr "" -"%%prog komanda [opcije] [argumenti]\n" +"%%prog команда [могућности] [аргументи]\n" "\n" -"%%prog je interfejs komandne linije za calibre bazu podataka.\n" +"%%prog је интерфејс командне линије за calibre базу података.\n" "\n" -"komanda je jedna od:\n" +"команда је једна од:\n" " %s\n" "\n" "Za pomoć vidite: %%prog komanda --help\n" #: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:660 msgid "No label was provided" -msgstr "Nije navedena nijedna etiketa" +msgstr "Није наведена ниједна етикета." #: /home/kovid/work/calibre/src/calibre/library/custom_columns.py:662 msgid "" "The label must contain only lower case letters, digits and underscores, and " "start with a letter" msgstr "" -"Etiketa sme sadržati samo mala slova, cifre i donje crte, i mora početi " -"slovom." +"Етикета сме садржати само мала слова, цифре и доње црте, и мора почети " +"словом." #: /home/kovid/work/calibre/src/calibre/library/database2.py:69 #, python-format msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -"<p>Prevodim staru bazu podataka u biblioteku e-knjiga u %s<br><center>" +"<p>Преводим стару базу података у библиотеку е-књига у %s<br><center>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" -msgstr "Kopiram <b>%s</b>" +msgstr "Умножавам<b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" -msgstr "Sažimam bazu podataka" +msgstr "Сажимам базу података" #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:213 msgid "Identifiers" -msgstr "" +msgstr "Идентификатори" #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:223 msgid "Author Sort" -msgstr "Sortiranje po autoru" +msgstr "Разврстај по аутору." #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:335 msgid "Series Sort" @@ -18445,51 +18606,51 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:345 msgid "Title Sort" -msgstr "Sortiranje po naslovu" +msgstr "Разврстај по наслову." #: /home/kovid/work/calibre/src/calibre/library/restore.py:128 msgid "Processed" -msgstr "Obrađeno" +msgstr "Обрађено" #: /home/kovid/work/calibre/src/calibre/library/restore.py:200 msgid "creating custom column " -msgstr "kreiram korisničku kolonu " +msgstr "правим корисничку колону " #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:32 msgid "The title" -msgstr "Naslov" +msgstr "Наслов" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:33 msgid "The authors" -msgstr "Autori" +msgstr "Аутори" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:34 msgid "" "The author sort string. To use only the first letter of the name use " "{author_sort[0]}" msgstr "" -"Niz zankova za sortiranje po autoru. Da bi se koristilo samo prvo slovo " -"navedite {author_sort[0]}" +"Низ знакова за разврставање по аутору. Да би се користило само прво слово " +"наведите {author_sort[0]}" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:36 msgid "The tags" -msgstr "Etikete" +msgstr "Ознаке" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:37 msgid "The series" -msgstr "Serija" +msgstr "Серија" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:38 msgid "" "The series number. To get leading zeros use {series_index:0>3s} or " "{series_index:>3s} for leading spaces" msgstr "" -"Broj serije. Da biste dobili vodeće nule koristite {series_index:0>3s} ili " -"{series_index:>3s} za vodeće praznine" +"Број серије. Да бисте добили водеће нуле користите {series_index:0>3s} или " +"{series_index:>3s} за водеће празнине." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:41 msgid "The rating" -msgstr "Ocena" +msgstr "Оцена" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:42 msgid "The ISBN" @@ -18497,15 +18658,15 @@ msgstr "ISBN" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:43 msgid "The publisher" -msgstr "Izdavač" +msgstr "Издавач" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:44 msgid "The date" -msgstr "Datum" +msgstr "Датум" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:45 msgid "The published date" -msgstr "Datum izdavanja" +msgstr "Датум издавања." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:46 msgid "The date when the metadata for this book record was last modified" @@ -18513,43 +18674,43 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:48 msgid "The calibre internal id" -msgstr "Interni calibre identifikator" +msgstr "Интерни calibre идентификатор." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:76 msgid "Options to control saving to disk" -msgstr "Opcije za kontrolu snimanja na disk" +msgstr "Могућности за контролу чувања на диску." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:82 msgid "" "Normally, calibre will update the metadata in the saved files from what is " "in the calibre library. Makes saving to disk slower." msgstr "" -"Calibre će obično ažurirati metapodatke u snimljenim fajlovima koristeći " -"podatke iz svoje biblioteke. Ovo usporava snimanje na disk." +"Calibre ће обично ажурирати метаподатке у сачуваним датотекама користећи " +"податке из своје библиотеке. Ово успорава чување на диск." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:85 msgid "" "Normally, calibre will write the metadata into a separate OPF file along " "with the actual e-book files." msgstr "" -"Calibre će obično upisati metapodatke u poseban OPF fajl uz fajl koji sadrži " -"e-knjigu." +"Calibre ће обично уписати метаподатке у посебну OPF датотеку уз датотеку " +"која садржи е-књигу." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:88 msgid "" "Normally, calibre will save the cover in a separate file along with the " "actual e-book file(s)." msgstr "" -"Calibre će obično snimiti naslovnu stranu u poseban fajl uz fajl koji sadrži " -"e-knjigu." +"Calibre ће обично сачувати насловну страну у посебну датотеку уз датотеку " +"која садржи е-књигу." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:91 msgid "" "Comma separated list of formats to save for each book. By default all " "available formats are saved." msgstr "" -"Zarezima razdvojena lista formata koji će biti snimljeni za svaku od knjiga. " -"Podrazumeva se da se snimaju svi raspoloživi formati." +"Зарезима раздвојена листа формата који ће бити сачувани за сваку од књига. " +"Подразумева се да се чувају сви расположиви формати." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:94 #, python-format @@ -18576,9 +18737,9 @@ msgid "" "experience errors when saving, depending on how well the filesystem you are " "saving to supports unicode." msgstr "" -"Calibre će obično prevesti sva ne-engleska slova u imenu fajla u engleske " -"ekvivalente. UPOZORENJE: Ako isključite ovu opciju mogu se desiti greške pri " -"snimanju ukoliko vaš fajl sistem ne podržava Unicode znake u imenu fajla." +"Calibre ће обично превести сва не-енглеска слова у имену датотеке у енглеске " +"еквиваленте. УПОЗОРЕЊЕ: Ако искључите ову могућност могу се десити грешке " +"при чувању уколико ваш систем не подржава Уникод знаке у имену датотеке." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:113 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:117 @@ -18590,11 +18751,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:121 msgid "Convert paths to lowercase." -msgstr "Promeni putanje u mala slova." +msgstr "Промени путању за мала слова." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:123 msgid "Replace whitespace with underscores." -msgstr "Zameni razmake donjim crtama." +msgstr "Замени размаке доњим цртама." #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:125 msgid "" @@ -18616,51 +18777,51 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:405 #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:438 msgid "Requested formats not available" -msgstr "Traženi format nije na raspolaganju" +msgstr "Тражени формат није на располагању." #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:21 msgid "Settings to control the calibre content server" -msgstr "Opcije koje upravljaju calibre serverom sadržaja" +msgstr "Могућности које управљају calibre сервером садржаја." #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:25 #, python-format msgid "The port on which to listen. Default is %default" -msgstr "Port koji će se koristiti za komunikaciju. Podrazumeva se %default" +msgstr "" +"Прикључак који ће се користити за комуникацију. Подразумева се %default" #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:27 #, python-format msgid "The server timeout in seconds. Default is %default" -msgstr "" -"Maksimalno vreme čekanja na server, u sekundama. Podrazumeva se %default" +msgstr "Најдуже време чекања на сервер, у секундама. Подразумева се %default" #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:29 #, python-format msgid "The max number of worker threads to use. Default is %default" -msgstr "Najveći dozvoljen broj radnih procesa. Podrazumeva se %default" +msgstr "Највећи дозвољен број радних процеса. Подразумева се %default" #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:31 msgid "Set a password to restrict access. By default access is unrestricted." msgstr "" -"Postavite lozinku da ograničite pristup. Podrazumeva se slobodan pristup" +"Поставите лозинку да ограничите приступ. Подразумева се слободан приступ." #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:33 #, python-format msgid "Username for access. By default, it is: %default" -msgstr "Korisničko ime za pristup. Podrazumeva se: %default" +msgstr "Корисничко име за приступ. Подразумева се: %default" #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:37 #, python-format msgid "The maximum size for displayed covers. Default is %default." msgstr "" -"Maksimalna veličina prikazanih naslovnih strana. Podrazumeva se %default" +"Највећа величина приказаних насловних страна. Подразумева се %default" #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:39 msgid "" "The maximum number of matches to return per OPDS query. This affects Stanza, " "WordPlayer, etc. integration." msgstr "" -"Najveći broj rezultata koje će vratiti OPDS pretraga. Ovo utiče na " -"integrisanje sa Stanza, WordPlayer, itd." +"Највећи број резултата које ће вратити OPDS претрага. Ово утиче на " +"интегрисање са Stanza, WordPlayer, итд." #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:43 #, python-format @@ -18669,58 +18830,58 @@ msgid "" "more than this number of items. Default: %default. Set to a large number to " "disable grouping." msgstr "" -"Stavke iz kategorija kao što su autor/etikete grupiši po prvom slovu kada ih " -"ima više od ovog broja. Podrazumeva se: %default. Postavite ovo na dovoljno " -"veliki broj da onemogućite grupisanje." +"Ставке из категорија као што су аутор/етикете групиши по првом слову када их " +"има више од овог броја. Подразумева се: %default. Поставите ово на довољно " +"велики број да онемогућите груписање." #: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:48 msgid "" "Prefix to prepend to all URLs. Useful for reverseproxying to this server " "from Apache/nginx/etc." msgstr "" -"Prefiks koji će biti dodat svim URLovima. Korisno za reverseproxying ka ovom " -"serveru iz Apache/nginx/itd." +"Префикс који ће бити додат свим УРЛ-овима. Корисно за reverseproxying ка " +"овом серверу из Apache/nginx/итд." #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:294 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:342 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:626 msgid "All books" -msgstr "Sve knjige" +msgstr "Све књиге" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" -msgstr "Najnovije" +msgstr "Најновије" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:64 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:498 msgid "Loading, please wait" -msgstr "Učitavam. Molim sačekajte." +msgstr "Учитавам. Молим сачекајте." #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:111 msgid "Go to" -msgstr "Idi na" +msgstr "Иди на" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 msgid "First" -msgstr "Prvi" +msgstr "Прво" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 msgid "Last" -msgstr "Poslednji" +msgstr "Последњи" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:109 #, python-format msgid "Browsing %d books" -msgstr "Pregled %d knjiga" +msgstr "Преглед %d књига" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:126 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:256 msgid "Average rating" -msgstr "Prosečna ocena" +msgstr "Просечна оцена" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:127 #, python-format @@ -18730,85 +18891,85 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:164 #, python-format msgid "%d stars" -msgstr "%d zvezdica" +msgstr "%d звездица" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Popularity" -msgstr "Popularnost" +msgstr "Популарност" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:276 msgid "Sort by" -msgstr "Sortiraj po" +msgstr "Разврстај по" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:279 msgid "library" -msgstr "biblioteka" +msgstr "библиотека" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:280 msgid "home" -msgstr "početna" +msgstr "почетна" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:387 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:452 msgid "Browse books by" -msgstr "Pregledaj knjige po" +msgstr "Прегледај књиге по" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:392 msgid "Choose a category to browse by:" -msgstr "Izaberi kategoriju po kojoj će se pregledati:" +msgstr "Изабери категорију по којој ће се прегледати:" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:523 msgid "Browsing by" -msgstr "Pregled po" +msgstr "Преглед по" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:524 msgid "Up" -msgstr "Gore" +msgstr "Горе" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:661 msgid "in" -msgstr "u" +msgstr "у" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:664 msgid "Books in" -msgstr "Knjige u" +msgstr "Књиге у" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:758 msgid "Other formats" -msgstr "Drugi formati" +msgstr "Други формати" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:765 #, python-format msgid "Read %(title)s in the %(fmt)s format" -msgstr "Čitaj %(title)s u formatu %(fmt)s" +msgstr "Читај %(title)s у формату %(fmt)s" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:770 msgid "Get" -msgstr "Preuzmi" +msgstr "Узми" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:783 msgid "Details" -msgstr "Detalji" +msgstr "Појединости" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:785 msgid "Permalink" -msgstr "Trajni link" +msgstr "Стална веза" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:786 msgid "A permanent link to this book" -msgstr "Trajni link ka ovoj knjizi" +msgstr "Трајна веза ка овој књизи." #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:798 msgid "This book has been deleted" -msgstr "Ova knjiga je obrisana" +msgstr "Ова књига је избрисана" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:886 msgid "in search" -msgstr "u pretrazi" +msgstr "у претрази" #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:888 msgid "Matching books" -msgstr "Odgovarajuće knjige" +msgstr "Одговарајуће књиге." #: /home/kovid/work/calibre/src/calibre/library/server/main.py:40 msgid "" @@ -18822,42 +18983,41 @@ msgid "" "\n" "The OPDS interface is advertised via BonJour automatically.\n" msgstr "" -"[opcije]\n" +"[могућности]\n" "\n" -"Pokrenite calibre server. calibre server čini\n" -"vašu biblioteku vidljivom na Internetu. Podrazumevani\n" -"interfejs omogućava da pregledate biblioteku po\n" -"kategorijama. Možete takođe pristupiti i interfejsu \n" -"optimiziovanom za mobilne uređaje na adresi /mobile\n" -"kao i OPDS interfejs namenjen čitačima na adresi /opds.\n" +"Покрените calibre сервер. calibre сервер чини\n" +"вашу библиотеку видљивом на Интернету. Подразумевани\n" +"интерфејс омогућава да прегледате библиотеку по\n" +"категоријама. Можете такође приступити и интерфејсу \n" +"оптимизиованом за мобилне уређаје на адреси /mobile\n" +"као и OPDS интерфејс намењен читачима на адреси /opds.\n" "\n" "OPDS interfejs se automatski najavljuje preko Bonjour servisa.\n" #: /home/kovid/work/calibre/src/calibre/library/server/main.py:52 msgid "Path to the library folder to serve with the content server" -msgstr "" -"Putanja do direktorijuma s bibliotekom koju će koristiti server sadržaja" +msgstr "Путања до фасцикле с библиотеком коју ће користити сервер садржаја." #: /home/kovid/work/calibre/src/calibre/library/server/main.py:54 msgid "Write process PID to the specified file" -msgstr "Upiši PID procesa u navedeni fajl" +msgstr "Упиши PID процеса у наведену датотеку" #: /home/kovid/work/calibre/src/calibre/library/server/main.py:58 msgid "" "Specifies a restriction to be used for this invocation. This option " "overrides any per-library settings specified in the GUI" msgstr "" -"Navodi ograničenje koje će biti korišćeno pri ovom pokretanju. Ovo " -"podešavanje zamenjuje sva podešavanja za pojedine biblioteke koja su " -"postavljena u korisničkom interfejsu" +"Наводи ограничење које ће бити коришћено при овом покретању. Ово подешавање " +"замењује сва подешавања за поједине библиотеке која су постављена у " +"корисничком сучељу." #: /home/kovid/work/calibre/src/calibre/library/server/main.py:62 msgid "" "Auto reload server when source code changes. May not work in all " "environments." msgstr "" -"Automatski ponovo pokreni server po izmeni izvornog koda. Ovo možda neće " -"raditi u svim uslovima." +"Аутоматски поново покрени послужитељ по измени изворног кода. Ово можда неће " +"радити у свим условима." #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:160 msgid "Switch to the full interface (non-mobile interface)" @@ -18869,96 +19029,96 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" -msgstr "%d knjiga" +msgstr "%d књига" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" -msgstr "%d stavki." - -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 -#, python-format -msgid "RATING: %s<br />" -msgstr "OCENA: %s<br />" +msgstr "%d ставки." #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format -msgid "TAGS: %s<br />" -msgstr "ETIKETE: %s<br />" +msgid "RATING: %s<br />" +msgstr "ОЦЕНА: %s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 +#, python-format +msgid "TAGS: %s<br />" +msgstr "ОЗНАКЕ: %s<br />" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" -msgstr "Knjige u vašoj biblioteci" +msgstr "Књиге у вашој библиотеци." -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " -msgstr "Od autora " +msgstr "Од аутора " -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " -msgstr "Knjige sortirane po " +msgstr "Разврстај књиге по " #: /home/kovid/work/calibre/src/calibre/utils/config.py:34 msgid "Usage" -msgstr "" +msgstr "Употреба" #: /home/kovid/work/calibre/src/calibre/utils/config.py:85 msgid "Created by " -msgstr "Kreiran od strane " +msgstr "Направљен од " #: /home/kovid/work/calibre/src/calibre/utils/config.py:86 msgid "" "Whenever you pass arguments to %prog that have spaces in them, enclose the " "arguments in quotation marks." msgstr "" -"Kad prosleđuješ argumente za %prog koji u sebi sadrže razmake obuhvati ih " -"navodnicima." +"Кад прослеђујеш аргументе за %prog који у себи садрже размаке обухвати их " +"наводницима." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:377 msgid "Path to the database in which books are stored" -msgstr "Putanja do baze podataka u kojoj se nalaze knjige" +msgstr "Путања до базе података у којој се налазе књиге." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:379 msgid "Pattern to guess metadata from filenames" -msgstr "Shema za određivanje metapodataka iz imena fajlova" +msgstr "Шема за одређивање метаподатака из имена датотека." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:381 msgid "Access key for isbndb.com" -msgstr "Ključ za pristup isbndb.com" +msgstr "Кључ за приступ isbndb.com" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:383 msgid "Default timeout for network operations (seconds)" msgstr "" -"Podrazumevano maksimalno vreme za čekanje na završetak mrežnih operacija (u " -"sekundama)" +"Подразумевано максимално време за чекање на завршетак мрежних операција (у " +"секундама)." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:385 msgid "Path to directory in which your library of books is stored" -msgstr "Putanja do direktorijuma u kojem se nalazi biblioteka" +msgstr "Путања до директоријума у којем се налази библиотека." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:387 msgid "The language in which to display the user interface" -msgstr "Jezik korišćen u programu" +msgstr "Језик коришћен у програму." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:389 msgid "The default output format for ebook conversions." -msgstr "Podrazumevane opcije za konverziju e-knjiga." +msgstr "Подразумеване могућности за претварање е-књига." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:393 msgid "Ordered list of formats to prefer for input." -msgstr "Lista izlaznih formata uređena po poželjnosti." +msgstr "Листа излазних формата уређена по вољи." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:395 msgid "Read metadata from files" -msgstr "Čitaj metapodatke iz fajlova" +msgstr "Читај метаподатке из датотека." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:397 msgid "" @@ -18969,23 +19129,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:402 msgid "Swap author first and last names when reading metadata" -msgstr "Zameni ime i prezime autora pri čitanju metapodataka" +msgstr "Замени име и презиме аутора при читању метаподатака." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:404 msgid "Add new formats to existing book records" -msgstr "Dodaj nove formate za postojeće knjige" +msgstr "Додај нове формате за постојеће књиге." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:406 msgid "Tags to apply to books added to the library" -msgstr "Etikete koje će biti primenjene na knjige dodate u biblioteku" +msgstr "Етикете које ће бити примењене на књиге додате у библиотеку." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:410 msgid "List of named saved searches" -msgstr "Spisak imenovanih sačuvanih pretraga" +msgstr "Списак именованих сачуваних претрага." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:411 msgid "User-created tag browser categories" -msgstr "Korisničke kategorije za izlog etiketa" +msgstr "Корисничке категорије за излог етикета." #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:413 msgid "How and when calibre updates metadata on the device." @@ -19000,7 +19160,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -19008,11 +19168,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:31 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182 msgid "failed to scan program. Invalid input {0}" -msgstr "nisam uspeo da pročitam program. Loš ulaz {0}" +msgstr "нисам успео да прочитам програм. Лош улаз {0}" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:39 msgid " near " -msgstr " blizu " +msgstr " близу " #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:45 msgid "end of program" @@ -19021,7 +19181,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:107 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:197 msgid "syntax error - program ends before EOF" -msgstr "sintaksna greška - program se završio pre EOF" +msgstr "синтаксна грешка - програм се завршио пре EOF" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:135 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:242 @@ -19031,27 +19191,27 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:141 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:250 msgid "unknown function {0}" -msgstr "nepoznata funkcija {0}" +msgstr "непозната функција {0}" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:161 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:263 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:283 msgid "missing closing parenthesis" -msgstr "nedostaje zatvorena zagrada" +msgstr "недостаје затворена заграда" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:173 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:304 msgid "expression is not function or constant" -msgstr "izraz nije funkcija ili konstanta" +msgstr "израз није функција или константа" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:338 msgid "format: type {0} requires an integer value, got {1}" -msgstr "format: tip {0} zahteva celobrojnu vrednost, a navedeno je {1}" +msgstr "формат: тип {0} захтева целобројну вредност, а наведено је {1}" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:344 msgid "format: type {0} requires a decimal (float) value, got {1}" msgstr "" -"format: tip {0} zahteva decimalnu (realnu) vrednost, a navedeno je {1}" +"формат: тип {0} захтева децималну (реалну) вредност, а наведено је {1}" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:479 #, python-format @@ -19060,7 +19220,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:541 msgid "No such variable " -msgstr "Nema ovakve promenljive " +msgstr "Нема овакве променљиве. " #: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:77 msgid "No documentation provided" @@ -19174,7 +19334,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:315 msgid "lookup requires either 2 or an odd number of arguments" -msgstr "pretraga zahteva ili 2, ili neparan broj argumenata" +msgstr "претрага захтева или 2, или непаран број аргумената" #: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:328 msgid "" @@ -19200,7 +19360,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:365 msgid "switch requires an odd number of arguments" -msgstr "promena zateva neparan broj argumenata" +msgstr "промена затева непаран број аргумената" #: /home/kovid/work/calibre/src/calibre/utils/formatter_functions.py:378 msgid "" @@ -19559,7 +19719,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." -msgstr "Čekam..." +msgstr "Чекам..." #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:54 msgid "Aborted, taking too long" @@ -19567,245 +19727,245 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:56 msgid "Stopped" -msgstr "Zaustavljeno" +msgstr "Заустављено" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:58 msgid "Finished" -msgstr "Gotovo" +msgstr "Завршено" #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:80 msgid "Working..." -msgstr "Radim..." +msgstr "Радим..." #: /home/kovid/work/calibre/src/calibre/utils/localization.py:115 msgid "Brazilian Portuguese" -msgstr "Brazilski portugalski" +msgstr "Бразилски (Португалски)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:116 msgid "English (UK)" -msgstr "Engleski (Velika Britanija)" +msgstr "Енглески (Велика Британија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:117 msgid "Simplified Chinese" -msgstr "Uprošćeni kineski" +msgstr "Упрошћени кинески" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:118 msgid "Chinese (HK)" -msgstr "Kineski (Hong Kong)" +msgstr "Кинески (Хонг Конг)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:119 msgid "Traditional Chinese" -msgstr "Tradicionalni kineski" +msgstr "Традиционални кинески" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:120 msgid "English" -msgstr "Engleski" +msgstr "Енглески" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:121 msgid "English (Australia)" -msgstr "Engleski (Australija)" +msgstr "Енглески (Аустралија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:122 msgid "English (Japan)" -msgstr "" +msgstr "Енглески (Јапан)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:123 msgid "English (Germany)" -msgstr "" +msgstr "Енглески (Немачки)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:124 msgid "English (Bulgaria)" -msgstr "" +msgstr "Енглески (Бугарска)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:125 msgid "English (Egypt)" -msgstr "" +msgstr "Енглески (Египат)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:126 msgid "English (New Zealand)" -msgstr "Engleski (Novi Zeland)" +msgstr "Енглески (Нови Зеланд)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:127 msgid "English (Canada)" -msgstr "Engleski (Kanada)" +msgstr "Енглески (Канада)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:128 msgid "English (Greece)" -msgstr "" +msgstr "Енглески (Грчка)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:129 msgid "English (India)" -msgstr "Engleski (Indija)" +msgstr "Енглески (Индија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:130 msgid "English (Nepal)" -msgstr "" +msgstr "Енглески (Непал)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:131 msgid "English (Thailand)" -msgstr "Engleski (Tajland)" +msgstr "Енглески (Тајланд)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:132 msgid "English (Turkey)" -msgstr "" +msgstr "Енглески (Турска)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:133 msgid "English (Cyprus)" -msgstr "Engleski (Kipar)" +msgstr "Енглески (Кипар)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:134 msgid "English (Czech Republic)" -msgstr "" +msgstr "Енглески (Чешка Република)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:135 msgid "English (Pakistan)" -msgstr "Engleski (Pakistan)" +msgstr "Енглески (Пакистан)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:136 msgid "English (Croatia)" -msgstr "" +msgstr "Енглески (Хрватска)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:137 msgid "English (Hong Kong)" -msgstr "" +msgstr "Енглески (Хонгконг)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:138 msgid "English (Indonesia)" -msgstr "" +msgstr "Енглески (Индонезија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:139 msgid "English (Israel)" -msgstr "Engleski (Izrael)" +msgstr "Енглески (Израел)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:140 msgid "English (Russia)" -msgstr "" +msgstr "Енглески (Русија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:141 msgid "English (Singapore)" -msgstr "Engleski (Singapur)" +msgstr "Енглески (Сингапур)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:142 msgid "English (Yemen)" -msgstr "Engleski (Jemen)" +msgstr "Енглески (Јемен)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:143 msgid "English (Ireland)" -msgstr "Engleski (Irska)" +msgstr "Енглески (Ирска)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:144 msgid "English (China)" -msgstr "Engleski (Kina)" +msgstr "Енглески (Кина)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:145 msgid "English (South Africa)" -msgstr "" +msgstr "Енглески (Јужна Африка)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:146 msgid "Spanish (Paraguay)" -msgstr "Španski (Paragvaj)" +msgstr "Шпански (Парагвај)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:147 msgid "Spanish (Uruguay)" -msgstr "" +msgstr "Шпански (Уругвај)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:148 msgid "Spanish (Argentina)" -msgstr "" +msgstr "Шпански (Аргентина)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:149 msgid "Spanish (Mexico)" -msgstr "" +msgstr "Шпански (Мексико)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:150 msgid "Spanish (Cuba)" -msgstr "" +msgstr "Шпански (Куба)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:151 msgid "Spanish (Chile)" -msgstr "" +msgstr "Шпански (Чиле)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:152 msgid "Spanish (Ecuador)" -msgstr "" +msgstr "Шпански (Еквадор)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:153 msgid "Spanish (Honduras)" -msgstr "" +msgstr "Шпански (Хондурас)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:154 msgid "Spanish (Venezuela)" -msgstr "" +msgstr "Шпански (Венецуела)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:155 msgid "Spanish (Bolivia)" -msgstr "" +msgstr "Шпански (Боливија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:156 msgid "Spanish (Nicaragua)" -msgstr "" +msgstr "Шпански (Никарагва)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:157 msgid "Spanish (Colombia)" -msgstr "" +msgstr "Шпански (Колумбија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:158 msgid "German (AT)" -msgstr "Nemački (Austrija)" +msgstr "Немачки (Аустрија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:159 msgid "French (BE)" -msgstr "Francuski (BE)" +msgstr "Француски (Белгија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:160 msgid "Dutch (NL)" -msgstr "Holandski (Holandija)" +msgstr "Холандски (Холандија)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:161 msgid "Dutch (BE)" -msgstr "Holandski (Belgija)" +msgstr "Холандски (Белгија)" #. NOTE: Ante Meridian (i.e. like 10:00 AM) #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 msgid "AM" -msgstr "" +msgstr "ПрПо." #. NOTE: Post Meridian (i.e. like 10:00 PM) #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 msgid "PM" -msgstr "" +msgstr "ПоПо." #. NOTE: Ante Meridian (i.e. like 10:00 am) #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 msgid "am" -msgstr "" +msgstr "прпо." #. NOTE: Post Meridian (i.e. like 10:00 pm) #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 msgid "pm" -msgstr "" +msgstr "попо." #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/console.py:56 msgid "Choose theme (needs restart)" -msgstr "Izaberite stil (potrebno je pnovno pokretanje)" +msgstr "Изаберите стил (потребно је поновно покретање)" #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/console.py:109 msgid "ERROR: Unhandled exception" -msgstr "GREŠKA: Neočekivan izuzetak" +msgstr "ГРЕШКА: Неочекиван изузетак." #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/console.py:188 msgid "No interpreter" -msgstr "Nema prevodioca" +msgstr "Нема преводиоца" #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/console.py:189 msgid "No active interpreter found. Try restarting the console" msgstr "" -"Nije pronađen aktivan prevodilac. Probajte da ponovo pokrenete komandnu " -"liniju" +"Није пронађен активан преводилац. Пробајте да поново покренете командну " +"линију." #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/console.py:203 msgid "Interpreter died" -msgstr "Prevodilac je prestao s radom" +msgstr "Преводилац је престао с радом." #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/console.py:204 msgid "" @@ -19815,211 +19975,211 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/main.py:20 msgid "Welcome to" -msgstr "Dobrodošli u" +msgstr "Добродошли у" #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/main.py:41 msgid " console " -msgstr " komandna linija " +msgstr " командна линија " #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/main.py:51 msgid "Code is running" -msgstr "Program se izvršava" +msgstr "Програм се извршава" #: /home/kovid/work/calibre/src/calibre/utils/pyconsole/main.py:58 msgid "Restart console" -msgstr "Ponovo pokreni komandnu liniju" +msgstr "Поново покрени командну линију." #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:53 msgid "URL must have the scheme sftp" -msgstr "URL mora da ima sftp shemu" +msgstr "УРЛ мора да има sftp шему" #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:57 msgid "host must be of the form user@hostname" -msgstr "ime mora da bude u obliku korisnik@računar" +msgstr "име мора да буде у облику корисник@рачунар" #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:68 msgid "Failed to negotiate SSH session: " -msgstr "Nisam uspeo da dogovorim SSH sesiju: " +msgstr "Нисам успео да договорим SSH мисију: " #: /home/kovid/work/calibre/src/calibre/utils/sftp.py:71 #, python-format msgid "Failed to authenticate with server: %s" -msgstr "Nije uspelo prijavljivanje na server: %s" +msgstr "Није успело пријављивање на сервер: %s" #: /home/kovid/work/calibre/src/calibre/utils/smtp.py:255 msgid "Control email delivery" -msgstr "Kontrola dostave elektronske pošte" +msgstr "Контрола доставе електронске поште." #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:121 msgid "Unknown section" -msgstr "Nepoznat odeljak" +msgstr "Непознат одељак" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:143 msgid "Unknown feed" -msgstr "Nepoznat izvor" +msgstr "Непознат извор" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:161 #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:188 msgid "Untitled article" -msgstr "Članak bez imena" +msgstr "Чланак без имена" #: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:48 msgid "Unknown News Source" -msgstr "Nepoznat izvor vesti" +msgstr "Непознат извор вести" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." -msgstr "Recept \"%s\" zahteva korisničko ime i lozinku" +msgstr "Рецепт \"%s\" захтева корисничко име и лозинку." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" -msgstr "Preuzimanje gotovo" +msgstr "Преузимање је завршено" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" -msgstr "Nisam uspeo da preuzmem sledeće članke:" +msgstr "Нисам успео да преузмем следеће чланке:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" -msgstr "Nisam uspeo da preuzmem delove sledećih članaka:" +msgstr "Нисам успео да преузмем делове следећих чланаке:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " -msgstr " sa " +msgstr " од " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" -msgstr "\tNeuspele veze:" +msgstr "\tНеуспеле везе:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." -msgstr "Preuzimam izvore..." +msgstr "Преузимам изворе..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" -msgstr "Dobio sam izvore s osnovne strane..." +msgstr "Добио сам изворе с основне стране..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." -msgstr "Pokušavam da preuzmem naslovnu stranu..." +msgstr "Покушавам да преузмем насловну страну..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." -msgstr "Generišem impresum..." +msgstr "Правим списак уредника..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." -msgstr "Počinjem preuzimanje [%d niti]..." +msgstr "Почиње преузимање [%d niti]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" -msgstr "Izvori su preuzeti u %s" +msgstr "Извори су преузети у %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" -msgstr "Nisam uspeo da preuzmem naslovnu stranu: %s" +msgstr "Нисам успео да преузмем насловну страну: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" -msgstr "Preuzimam naslovnu stranu sa %s" +msgstr "Преузимам насловну страну са %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" -msgstr "Preuzeo sam sliku za impresum" +msgstr "Преузео сам слику за импресум" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" -msgstr "Članak bez imena" +msgstr "Чланак без имена" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" -msgstr "Preuzeo sam članak: %s" +msgstr "Преузео сам чланак: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" -msgstr "Nije uspelo preuzimanje članka: %s" +msgstr "Није успело преузимање чланка: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" -msgstr "Preuzimam izvor" +msgstr "Преузимам извор" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -"Neuspelo prijavljivanje. Proverite korisničko ime i lozinku vašeg calibre " -"servisa za periodiku." +"Неуспело пријављивање. Проверите корисничко име и лозинку вашег calibre " +"сервиса за периодику." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." msgstr "" -"Nemate dozvolu za preuzimanje ovog broja. Ili vam je istekla pretplata, ili " -"ste premašili dozvoljeni broj preuzimanja za danas." +"Немате дозволу за преузимање овог броја. Или вам је истекла претплата, или " +"сте премашили дозвољени број преузимања за данас." #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 msgid "You" -msgstr "Vi" +msgstr "Ви" #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:75 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:84 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/model.py:203 msgid "Scheduled" -msgstr "Planirano" +msgstr "Заказано" #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:123 msgid "Next section" -msgstr "Sledeći odeljak" +msgstr "Следећи одељак" #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:126 msgid "Main menu" -msgstr "Osnovni meni" +msgstr "Главни изборник" #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:130 msgid "Previous section" -msgstr "Prethodni odeljak" +msgstr "Претходни одељак" #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:222 msgid "Section Menu" -msgstr "Meni za odeljke" +msgstr "Изборник за одељке" #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:225 msgid "Main Menu" -msgstr "Osnovni meni" +msgstr "Главни избор" #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:314 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:402 msgid "Sections" -msgstr "Odeljci" +msgstr "Одељци" #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:399 msgid "Articles" -msgstr "Članci" +msgstr "Чланци" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:505 msgid "" @@ -20029,27 +20189,27 @@ msgid "" msgstr "" "%prog URL\n" "\n" -"Gde je URL na primer http://google.com" +"Где је URL на пример http://google.com" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:508 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -"Osnovni direktorijum u koji će biti snimljen URL. Podrazumeva se %default" +"Основни директоријум у који ће бити сачуван УРЛ. Подразумева се %default" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:511 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" -msgstr "Broj sekundi za čekanje na odziv servera. Podrazumeva se %default s" +msgstr "Број секунди за чекање на одзив сервера. Подразумева се %default s" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:514 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" -msgstr "Najveća dubina rekurzije, tj. praćenja veza. Podrazumeva se %default" +msgstr "Највећа дубина рекурзије, тј. праћења веза. Подразумева се %default" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:517 #, python-format @@ -20057,8 +20217,8 @@ msgid "" "The maximum number of files to download. This only applies to files from <a " "href> tags. Default is %default" msgstr "" -"Najveći broj fajlova koji će biti preuzet. Ovo se odnosi samo na fajlove u " -"<a href> odrednicama. Podrazumeva se %default" +"Највећи број датотека који ће бити преузет. Ово се односи само на датотеке у " +"<a href> одредницама. Подразумева се %default" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:519 #, python-format @@ -20066,7 +20226,7 @@ msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -"Najmanji razmak, u sekundama, između uzastopnih preuzimanja. Podrazumeva se " +"Најмањи размак, у секундама, између узастопних преузимања. Подразумева се " "%default s" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:521 @@ -20074,8 +20234,8 @@ msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -"Kodni raspored Internet sajtova sa kojih pokušavate preuzimanje. Podrazumeva " -"se da će biti pokušan da bude određen automatski." +"Кодни распоред Интернет сајтова са којих покушавате преузимање. Подразумева " +"се да ће бити покушан да буде одређен аутоматски." #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:523 msgid "" @@ -20083,10 +20243,10 @@ msgid "" "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -"Biće praćene samo veze koje odgovaraju ovom regularnom izrazu. Ova opcija " -"može biti navedena više puta, u kom slučaju će veze biti praćene sve dok " -"može da se pronađe bar jedan regularni izraz kome odgovaraju. Podrazumeva se " -"da će se pratiti sve veze." +"Биће праћене само везе које одговарају овом регуларном изразу. Ова могућност " +"може бити наведена више пута, у ком случају ће везе бити праћене све док " +"може да се пронађе бар један регуларни израз коме одговарају. Подразумева се " +"да ће се пратити све везе." #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:525 msgid "" @@ -20098,75 +20258,75 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:527 msgid "Do not download CSS stylesheets." -msgstr "Ne preuzimaj CSS stilove." +msgstr "Не преузимај CSS стилове." #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:658 msgid "OK" -msgstr "" +msgstr "У реду" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 msgid "Save" -msgstr "" +msgstr "Сачувај" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" -msgstr "" +msgstr "Отвори" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:670 msgid "&Close" -msgstr "" +msgstr "&Затвори" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:673 msgid "Apply" -msgstr "" +msgstr "Примени" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:683 msgid "Don't Save" -msgstr "" +msgstr "Немој да сачуваш" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:685 msgid "Close without Saving" -msgstr "" +msgstr "Затвори без чувања" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:687 msgid "Discard" -msgstr "" +msgstr "Одбаци" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:690 msgid "&Yes" -msgstr "" +msgstr "&Да" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:693 msgid "Yes to &All" -msgstr "" +msgstr "Д&а за све" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:696 msgid "&No" -msgstr "" +msgstr "&Не" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:699 msgid "N&o to All" -msgstr "" +msgstr "Н&е за све" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:702 msgid "Save All" -msgstr "" +msgstr "Сачувај све" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:705 msgid "Abort" -msgstr "" +msgstr "Прекини" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:708 msgid "Retry" -msgstr "" +msgstr "Покушај поново" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:711 msgid "Ignore" -msgstr "" +msgstr "Занемари" #: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:714 msgid "Restore Defaults" -msgstr "" +msgstr "Врати подразумевано" #: /home/kovid/work/calibre/resources/default_tweaks.py:12 msgid "Auto increment series index" @@ -20824,7 +20984,7 @@ msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:480 msgid "Save original file when converting from same format to same format" msgstr "" -"Сачувај оригинални документ шри превођењу из истог формата у исти формат" +"Сачувај оригинални документ при превођењу из истог формата у исти формат." #: /home/kovid/work/calibre/resources/default_tweaks.py:481 msgid "" @@ -20836,7 +20996,7 @@ msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:487 msgid "Number of recently viewed books to show" -msgstr "Број скоро погледаних књига за показати" +msgstr "Број скоро погледаних књига за приказ." #: /home/kovid/work/calibre/resources/default_tweaks.py:488 msgid "" diff --git a/src/calibre/translations/sv.po b/src/calibre/translations/sv.po index 24b3720f58..f8ebd8c9e5 100644 --- a/src/calibre/translations/sv.po +++ b/src/calibre/translations/sv.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" -"PO-Revision-Date: 2011-12-04 19:49+0000\n" -"Last-Translator: Merarom <Unknown>\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" +"PO-Revision-Date: 2012-04-29 15:11+0000\n" +"Last-Translator: Johan Segerstedt <Unknown>\n" "Language-Team: Swedish <sv@li.org>\n" "MIME-Version: 1.0\n" "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-03-25 04:59+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-30 04:41+0000\n" +"X-Generator: Launchpad (build 15171)\n" "X-Poedit-Country: SWEDEN\n" "X-Poedit-Language: Swedish\n" @@ -28,8 +28,8 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -40,9 +40,9 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -80,9 +80,9 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -92,7 +92,7 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -102,16 +102,20 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -139,20 +143,20 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -160,25 +164,24 @@ msgstr "Gör absolut ingenting" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -186,14 +189,15 @@ msgstr "Gör absolut ingenting" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -355,7 +359,7 @@ msgstr "Ta bort böcker från ditt calibre-bibliotek eller anslutna enhet" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 msgid "Edit the metadata of books in your calibre library" -msgstr "Redigera metadatan för de böcker som finns i det calibre-bibliotek" +msgstr "Redigera metadata för de böcker som finns i ditt calibre-bibliotek" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 msgid "Read books in your calibre library" @@ -394,8 +398,8 @@ msgid "" "Send books via email or the web also connect to iTunes or folders on your " "computer as if they are devices" msgstr "" -"Skicka böcker via e-post eller webben också anslut till iTunes eller mappar " -"på datorn som om de är enheter" +"Skicka böcker via e-post eller webben. Anslut också till iTunes eller mappar " +"på datorn som om de vore enheter" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:827 #: /home/kovid/work/calibre/src/calibre/gui2/actions/help.py:16 @@ -413,31 +417,32 @@ msgstr "Hitta böcker liknande den valda" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:842 msgid "" "Switch between different calibre libraries and perform maintenance on them" -msgstr "Växla mellan olika calibre-bibliotek och utföra underhåll på dem" +msgstr "äxla mellan olika calibre-bibliotek och utför underhåll på dem" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:848 msgid "Copy books from the devce to your calibre library" -msgstr "Kopiera böcker från devce till din calibre-biblioteket" +msgstr "Kopiera böcker från enheten till ditt calibre-biblioteket" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:853 msgid "Edit the collections in which books are placed on your device" -msgstr "Redigera samlingar i vilka böcker är placerade på enheten" +msgstr "Redigera samlingarna som böckerna placeras i på enheten" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:858 msgid "Copy a book from one calibre library to another" -msgstr "Kopiera en bok från en kalicalibre-bibliotek till ett annat" +msgstr "Kopiera en bok från ett calibre-bibliotek till ett annat" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Make small tweaks to epub or htmlz files in your calibre library" msgstr "" +"Gör små förändringar i epub- eller htmlz-filer i ditt calibre-bibliotek" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 msgid "" "Find the next or previous match when searching in your calibre library in " "highlight mode" msgstr "" -"Hitta nästa eller föregående träff vid sökning i ditt calibre-biblioteket i " -"markera läget" +"Hitta nästa eller föregående träff vid sökning i markeraläget i ditt calibre-" +"bibliotek" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:874 msgid "Choose a random book from your calibre library" @@ -805,7 +810,7 @@ msgstr "Avsedd för iPad och liknande enheter med en upplösningen 768x1024" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:441 msgid "" "Intended for the iPad 3 and similar devices with a resolution of 1536x2048" -msgstr "" +msgstr "För iPad 3 och liknande enheter med upplösningen 1536x2048" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:447 msgid "Intended for generic tablet devices, does no resizing of images" @@ -978,11 +983,11 @@ msgstr "Kort B" msgid "Debug log" msgstr "Felsökningslogg" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "Kommunicera med Android-telefoner." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -990,11 +995,11 @@ msgstr "" "Kommaseparerad lista av kataloger på enheten dit e-böckerna skall skickas. " "Den första katalog som finns kommer att användas" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "Kommunicera med S60-telefoner" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "Kommunicera med WebOS-surfplattor." @@ -1092,6 +1097,9 @@ msgid "" "http://www.mobileread.com/forums/showthread.php?t=118559 for instructions on " "using 'Connect to iTunes'" msgstr "" +"Direkt anslutning stöds ej. Se " +"http://www.mobileread.com/forums/showthread.php?t=118559 för instruktioner " +"om hur \"Anslut till iTunes\" används." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:375 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:378 @@ -1134,21 +1142,21 @@ msgstr "" "Klicka på \"Visa detaljer\" för en lista." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Nyheter" @@ -1156,8 +1164,8 @@ msgstr "Nyheter" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "Katalog" @@ -1213,20 +1221,20 @@ msgstr "Bambook" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "Hämtar en lista över böcker på enheten..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "Överför böcker till enheten..." @@ -1234,8 +1242,8 @@ msgstr "Överför böcker till enheten..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "Lägger till böcker till enhetens metadatalista..." @@ -1245,8 +1253,8 @@ msgstr "Lägger till böcker till enhetens metadatalista..." #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "Tar bort böcker från enheten..." @@ -1254,13 +1262,13 @@ msgstr "Tar bort böcker från enheten..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "Ta bort böcker från enhetens metadatalista..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "Skickar metadata till enheten..." @@ -1534,11 +1542,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "Kommunicera med läsplattan Kindle DX." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "Kommunicera med Kindle Fire" @@ -1585,7 +1593,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:68 msgid "Show Previews" -msgstr "" +msgstr "Visa förhandsvisning" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:69 msgid "" @@ -1900,23 +1908,23 @@ msgstr "Kommunicera med Archos läsaren." msgid "Communicate with the Pico reader." msgstr "Kommunicera med Pico reader" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "Kommunicera med läsplattan iPapyrus." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "Kommunicera med läsplattan Sovos." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "Kommunicera med Sunstech EB700 läsaren." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "Kommunicera med Archos läsaren." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "Kommunicera med Wexler läsaren." @@ -2227,16 +2235,16 @@ msgstr "" "%(dis)s options." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" "Ändra dokumentets text och struktur med hjälp av användardefinierade mönster." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "Kontrollera automatisk detektering av dokumentets struktur." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " @@ -2246,15 +2254,15 @@ msgstr "" "innehållsförteckning, kommer denna att användas i stället för den " "automatiskt skapade." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "Alternativ för att skriva metadata till utdata" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "Alternativ för att hjälpa till att felsöka konverteringen" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" @@ -2262,7 +2270,7 @@ msgstr "" "Lista inbyggda receptnamn. Du kan skapa en e-bok från ett inbyggt recept så " "här: ebok-konvertera \"Recept Name.recipe\" output.epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "Utdata sparade till" @@ -2659,11 +2667,11 @@ msgstr "Bädda in denna teckensnittsfamilj som fast bredd-teckensnitt" msgid "Comic" msgstr "Serietidning" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "Använd om möjligt författarsorteringsfältet som författare." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." @@ -2671,20 +2679,20 @@ msgstr "" "Lägg inte till innehållsförteckningen till boken. Användbart om boken har en " "egen innehållsförteckning." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "Titel för alla infogade innehållsförteckningar." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "Komprimera inte filer." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "Etikett för böcker som ska lagras med Personliga dokument" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " @@ -2694,7 +2702,7 @@ msgstr "" "utdatamodulen kommer att försöka konvertera marginaler som fastställs i det " "ingående dokumentet, annars kommer det ignorera dem." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." @@ -2702,7 +2710,7 @@ msgstr "" "När du lägger innehållsförteckningen till boken, lägg den i början av boken " "istället för slutet. Rekommenderas inte." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." @@ -2710,7 +2718,7 @@ msgstr "" "Extrahera innehållet i MOBI filen till den angivna katalogen. Om katalogen " "redan existerar, kommer det att tas bort." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " @@ -2721,7 +2729,7 @@ msgstr "" "synkronisera dess senaste lästa position mellan olika enheter. Klaga hos " "Amazon." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2730,7 +2738,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "Alla artiklar" @@ -3541,8 +3549,8 @@ msgid "Set the publication date." msgstr "Ange publiceringsdatum." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." -msgstr "Ange bokens tidsstämpel (används av datumkolumnen i kaliber)." +msgid "Set the book timestamp (no longer used anywhere)" +msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 msgid "" @@ -3658,27 +3666,35 @@ msgstr "Sökmönster (reguljära uttryck) skall ersättas med SR3-ersättning." msgid "Replacement to replace the text found with sr3-search." msgstr "Ersättning för att ersätta texten hittades med SR3-sökning." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "Kunde inte hitta någon e-bok i arkivet" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "Nummer i serien och betyg måste anges som siffror. Ignorerar" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "Misslyckades med att tolka datum/tid" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "Konverterar indata till HTML..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "Omformar e-boken..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "Skapar" @@ -4037,19 +4053,19 @@ msgstr "Nej" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "Titel" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "Författare" @@ -4066,7 +4082,7 @@ msgid "Producer" msgstr "Producent" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -4110,7 +4126,7 @@ msgstr "Tidsstämpel" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "Utgiven" @@ -4247,60 +4263,60 @@ msgstr "" "Hämta omslag/sociala metadata från boken med angivet ISBN-nummer från " "LibraryThing.com\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "Omslag" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "Nedladdningar metadata och omslag från Amazon" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "USA" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "Frankrike" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "Tyskland" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "Storbritannien" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "Italien" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "Japan" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "Amazon webbplats som ska användas:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "" "Metadata från Amazon att hämtas med hjälp av detta lands Amazon hemsida." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "Amazon tidsbegränsning löpte ut. Försök igen senare." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "Metadatakälla" @@ -4383,78 +4399,79 @@ msgstr "Hämtar metadata och omslag från OZON.ru" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Det här är en Amazon Topaz-bok. Den kan inte hanteras." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "Inga detaljer tillgängliga" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "Titelsida" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "Innehållsförteckning" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +msgid "Title Page" +msgstr "Titelsida" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 msgid "Index" msgstr "Översikt" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 msgid "Glossary" msgstr "Ordförklaringar" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 msgid "Acknowledgements" msgstr "Tack till" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 msgid "Bibliography" msgstr "Litteraturförteckning" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 msgid "Colophon" msgstr "Kolofon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 msgid "Copyright" msgstr "Upphovsrätt" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 msgid "Dedication" msgstr "Tillägnan" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 msgid "Epigraph" msgstr "Epigraf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 msgid "Foreword" msgstr "Förord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 msgid "List of Illustrations" msgstr "Illustrationslista" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 msgid "List of Tables" msgstr "Tabellista" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 msgid "Notes" msgstr "Anteckningar" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 msgid "Preface" msgstr "Förord" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "Huvudtext" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "%s-formaterade böcker stöds inte" @@ -4753,77 +4770,77 @@ msgstr "Kunde inte hitta pdftohtml, kolla om det finns i din PATH" msgid "Table of Contents:" msgstr "Innehållsförteckning" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" "Skicka som standard filen till minneskortet i stället för till det inbyggda " "minnet." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "Bekräfta före borttagning" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "Huvudfönstrets geometri" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "Meddela när en ny version finns tillgänglig" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "Använd romerska siffror för nummer i serien" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "Sortera etikettlista efter namn, popularitet eller betyg" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "Jämför markeringar för någon eller alla." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "Antal omslag att visa i omslagsbläddraren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "Standardvärden för konvertering till LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "Alternativ för LRF-läsaren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "Format som visas med den interna läsaren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "Antal kolumner som ska visas i boklistan" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "Starta automatiskt medieservern när programmet startas" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "De äldsta nyheter som ska behållas i databasen" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "Visa en ikon i systemfältet" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "Skicka hämtade nyheter till enheten" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "Radera nyhetsböcker från biblioteket efter uppladdning till enhet" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" @@ -4831,15 +4848,15 @@ msgstr "" "Visa omslagsbläddraren i ett separat fönster i stället för i Calibres " "huvudfönster" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "Inaktivera meddelanden från ikonen i systemfältet" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "Standardåtgärd som knappen \"skicka till enhet\" skall utföra" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." @@ -4847,7 +4864,7 @@ msgstr "" "Börja söka när du skriver. Om detta är inaktiverad sedan söka kommer endast " "att ske när Enter eller Retur trycks ned." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " @@ -4856,7 +4873,7 @@ msgstr "" "När du söker, Visa alla böcker med sökresultaten markeras istället för att " "visa bara träffarna. Du kan använda N eller F3 för att gå till nästa match." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." @@ -4864,23 +4881,23 @@ msgstr "" "Maximala antalet samtidiga konvertering / Nyheter nedladdningsjobb. Detta " "nummer är dubbelt det faktiska värdet av historiska skäl." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "Hämta sociala metadata (etiketter/betyg/m.m.)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "Skriv över författare och titel med nya metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "Automatiskt hämtning av omslag, om det finns" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "Maximalt antal samtidiga jobb till samtliga processorer" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." @@ -4888,32 +4905,32 @@ msgstr "" "Layouten för användargränssnittet. Bred har bokdetaljsvyn till höger, och " "snäv har den längst ner." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "Visa snittbetyg per objekt i etikettbläddraren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "Inaktivera animationer i gränssnittet" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "Kategorier som inte skall visas i etikettbläddraren" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "Välj filer" @@ -5023,18 +5040,18 @@ msgid "Shift+A" msgstr "Skift + A" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "Inga böcker har valts" @@ -5044,7 +5061,7 @@ msgid "Cannot add files as no books are selected" msgstr "Kan inte lägga till filer eftersom inga böcker har valts" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "Är du säker" @@ -5190,6 +5207,10 @@ msgstr "Inga böcker har valts ut för kataloggeneration" msgid "Generating %s catalog..." msgstr "Skapar %s-katalog..." +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "Katalog genererad." @@ -5254,7 +5275,7 @@ msgstr "Byt/skapa bibliotek..." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "%d böcker" @@ -5313,7 +5334,7 @@ msgstr "Observera dock att själva bibliotekamappen kommer att döpas om." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "Finns redan" @@ -5442,7 +5463,7 @@ msgstr "Inga problem upptäcktes" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "Tillåẗs ej" @@ -5478,23 +5499,23 @@ msgstr "Masskonvertering" msgid "Create a catalog of the books in your calibre library" msgstr "Skapa en katalog med de böcker i din caliber biblioteket" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "Kan inte konvertera" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "Påbörjar konvertering av %d böcker" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 msgid "Empty output file, probably the conversion process crashed" msgstr "Tom utfil, förmodligen kraschade konverteringsprocessen" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5563,9 +5584,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5788,72 +5809,72 @@ msgstr "Hantera samlingar" msgid "Manage the collections on this device" msgstr "Hantera samlingar för denna enhet" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "Redigera metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "Redigera metadata individuellt" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "Redigera metadata i grupp" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "Hämta metadata och omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "Slå samman till den första valda boken - radera övriga" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "Slå samman till den första valda boken - behåll övriga" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "Sammanfoga bara format till första valda boken - ta bort andra" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "Sammanfoga bokuppgifter" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "M" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "Kan inte hämta metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "Misslyckades med att hämta metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "Hämtningen misslyckades" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" "Misslyckades med att hämta metadata eller omslag för någon av de %d böcker." -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "Metadata nedladdning avslutad" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " @@ -5862,7 +5883,7 @@ msgstr "" "Hämtat metadata för <b> %d böcker </b>. Fortsätt med att uppdatera metadata " "i ditt bibliotek?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " @@ -5871,20 +5892,20 @@ msgstr "" "Kunde inte hämta metadata och / eller omslag för %d av böckerna. Klicka på " "\"Visa detaljer\" för att se vilka böcker." -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "Nedladdning färdig" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "Hämta log" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "Vissa böcker har förändrats" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5896,21 +5917,21 @@ msgstr "" "över. Klicka på \"Visa detaljer\" för att se lista över ändrade böcker. Vill " "du fortsätta?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "Kan inte redigera metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "Kan inte sammanfoga böcker" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "Minst två böcker måste väljas för att de skall fogas samman" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" @@ -5918,7 +5939,7 @@ msgstr "" "Du håller på att sammanfoga fler än fem böcker. Är du <b>säker</b> på att du " "vill fortsätta?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5931,7 +5952,7 @@ msgstr "" "Andra och efterföljande böcker som sedan valts kommer inte att tas bort " "eller ändras. <br> Bekräfta att du vill fortsätta." -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5953,7 +5974,7 @@ msgstr "" "</b> från ditt calibre-bibliotek. <br> Är du <b> säker </b> du vill " "fortsätta?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5972,15 +5993,15 @@ msgstr "" "permanent <b> bort </ b> från din kaliber biblioteket. <br> Är du <b> säker " "</ b> du vill fortsätta?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "Tillämpa förändrat metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "Vissa fel" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -6380,7 +6401,7 @@ msgid "Selected books have no formats" msgstr "Valda böcker har inget format" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "Välj format att visa" @@ -6483,12 +6504,12 @@ msgstr "" "upphov till problemet." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "Dubbletter hittades!" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -6628,7 +6649,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -6673,7 +6694,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "Flera böcker per &mapp, antar varje ebokfil är en annorlunda bok" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -6698,7 +6719,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "Bok %(sidx)s av <span class=\"series_name\">%(series)s</span>" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "Samlingar" @@ -6716,17 +6737,17 @@ msgstr "Kopiera omslag" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "Dubbelklicka för att öppna fönster för bokdetaljer" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "Sökväg" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6800,7 +6821,7 @@ msgstr "utdata" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6811,7 +6832,7 @@ msgstr "utdata" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -7246,7 +7267,7 @@ msgid "Bulk Convert" msgstr "Masskonvertering" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "Alternativ specifika för utdataformatet." @@ -7838,7 +7859,7 @@ msgid "&Monospaced font family:" msgstr "Familj för fast bredd-teckensnitt:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "Metadata" @@ -7851,33 +7872,44 @@ msgstr "" "Ange metadata. Utdatafilen kommer att innehålla så mycket av metadata som " "möjligt." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "Denna bok har inget omslag" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "Omslagsmått: %(width)d x %(height)d punkter" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "Välj omslag för " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "Kan inte läsa" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "Du har inte behörighet att läsa filen: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "Fel vid läsningen av filen" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "<p> Det uppstod ett fel vid läsning från fil: <br /><b>" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr " är inte en giltig bild" @@ -7946,7 +7978,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "&Serier:" @@ -8125,23 +8157,33 @@ msgstr "Minska inte bildstorleken och djup" msgid "RB Output" msgstr "RB-utdata" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "Inga tillgängliga format" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "Kan inte bygga regex med grafisk byggare utan en bok." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "Kunde inte öppna filen" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "Kunde inte öppna filen, har du öppna den i ett annat program?" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "Öppna bok" @@ -8193,7 +8235,7 @@ msgstr "&Nästa" msgid "Preview" msgstr "Förhandsgranska" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" @@ -8203,60 +8245,136 @@ msgstr "" "&\n" "Byt" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "&Sök med reguljärt uttryck" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "Ogiltigt reguljärt uttryck" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "Ogiltigt reguljärt uttryck: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" -msgstr "Första uttrycket" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "&Ersätter text" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" -msgstr "Andra uttrycket" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" -msgstr "Tredje uttryck" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "Ändra" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "&Ta bort" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "&Spara" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -"<p> Sök och ersätt använder <i> reguljära uttryck </i>. Se <a " -"href=\"http://manual.calibre-ebook.com/regexp.html\"> reguljära uttryck " -"handledning </a> för att komma igång med reguljära uttryck. Även klicka " -"guiden knapparna nedan kan du testa din vanliga uttrycket mot strömmen " -"ingång dokument." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "Konvertera" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "Alternativ specifika för det ingående formatet." @@ -8597,11 +8715,11 @@ msgstr "" "märkningar. </p> Om du vill veta mer avancerad användning av XPath se \r\n" "<a href=\"http://manual.calibre-ebook.com/xpath.html\"> XPath Tutorial < /a>." -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "Bläddra bland omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "Omslagsbläddraren kunde inte laddas" @@ -9050,7 +9168,7 @@ msgid "My Books" msgstr "Mina böcker" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "Generera katalog" @@ -9310,7 +9428,7 @@ msgstr "(Låsbar)" #: /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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "Namn" @@ -9444,7 +9562,7 @@ msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" "Välj Verktygsfält och / eller menyer för att lägga <b> %s </b> för att:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -9463,7 +9581,7 @@ msgid "Set options for converting %s" msgstr "Ange alternativ för att konvertera %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -9504,7 +9622,7 @@ msgstr "Var vill du vill ta bort från?" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "Bibliotek" @@ -9539,11 +9657,11 @@ msgstr "Plats" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "Datum" @@ -9558,13 +9676,13 @@ msgstr "%(curr)s (var %(initial)s)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "Posten är tom" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "En post kan inte lämnas tom. Ta bort den i stället." @@ -9652,8 +9770,8 @@ msgstr "Länk" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "Inga träffar hittades" @@ -9700,17 +9818,17 @@ msgid "Copy to author" msgstr "Kopiera till författare" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "Ogiltigt författarnamn" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "Författarnamnet kan inte innehålla & tecken." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "Hantera författare" @@ -9805,41 +9923,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "&Kopiera till Urklipp" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "Visa &detaljer" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "Dölj &detaljer" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "Visa detaljerad information om detta fel" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "Kopierad" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "Kopiera till urklipp" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "Visa logg" @@ -9852,7 +9976,7 @@ msgid "Standard metadata" msgstr "Standard metadata" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "Anpassade metadata" @@ -10061,7 +10185,7 @@ msgstr "Lägg till etiketter: " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "Öppna etikettredigeraren" @@ -10220,13 +10344,13 @@ msgid "Set from &ebook file(s)" msgstr "Ställ in från & ebokfil(er)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "&Grundläggande metadata" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "&Anpassat metadata" @@ -10411,7 +10535,7 @@ msgstr "Lösenord krävs" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "Användarnamn:" @@ -10425,7 +10549,7 @@ msgstr "Lösenord:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "Vi&sa lösenord" @@ -11028,62 +11152,62 @@ msgstr "" "Du måste ange ett användarnamn och/eller lösenord för att använda denna " "nyhetskälla." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "Konto" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "(Tillval)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "(Obligatorisk)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "Skapad av: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "Senast hämtad: aldrig" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "aldrig" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "%(days)d dagar, %(hours)d timmar och %(mins)d minuter sedan" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "Senaste hämtat:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "Kan inte hämta nyheter eftersom ingen Internetanslutning är aktiv" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "Ingen Internetanslutning" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "Schemalägg nyhetshämtning" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "Lägg till en anpassad nyhetskälla" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -11228,21 +11352,21 @@ msgstr "" msgid "Negate" msgstr "Negera" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "Avancerad sökning" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "&Vilken typ av träff som ska användas:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 @@ -11250,14 +11374,14 @@ msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" "Innehåller: ordet eller frasen träffar var som helst i metadatafältet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "Lika med: ordet eller frasen måste passa hela metadatafältet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -11265,49 +11389,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "Reguljärt uttryck: Uttrycket måste passa någonstans i metadatafältet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "Hitta poster som ..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "&Alla dessa ord:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "Exakt denna fras:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "Ett eller flera av dessa &ord:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "Men visa inte poster som har ..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "Något av dessa oönskade ord:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -11317,46 +11441,46 @@ msgstr "" "Se <a Manuell href=\"http://manual.calibre-ebook.com/gui.html#the-search-" "interface\"> användare </ a> för mer hjälp" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "&Avancerad sökning" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "Ange titeln." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "&Författare:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "Etikett" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "Ange ett författarnamn. Endast en författare kan användas." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" "Skriv en rad namn, utan ett index. Endast ett serienamn kan användas." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "Ange etikett separerade med mellanslag" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -11364,14 +11488,14 @@ msgstr "Ange etikett separerade med mellanslag" msgid "&Clear" msgstr "&Rensa" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "Sök endast i särskilda områden:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "Tit&el / Författare / serien ..." @@ -11684,90 +11808,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "Inget recept valt" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "Den bifogade filen: %(fname)s är regeln som ska hämtas %(title)s." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "Recept för " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "Växla till avancerat läge" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "Växla till grundläge" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "RSS-flödet måste ha en titel" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "RSS-flödet måste ha en titel" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "RSS-flödet måste ha en URL" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "RSS-flödet %s måste ha en URL" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "Detta flöde har redan lagts till receptet" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "Felaktiga indata" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "<p>Kunde inte skapa recept. Fel:<br>%s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "Ersätt recept?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "Ett anpassat recept med namnet %s finns redan. Vill du ersätta det?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "Välj inbyggda recept" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "Välj en receptfil" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "Recept" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -12188,43 +12320,43 @@ msgstr "" msgid "Unavailable" msgstr "Otillgängligt" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "Jobb:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "Skift + Alt + J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "Klicka för att se listan över jobb" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr " - Jobb" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "Vill du verkligen stoppa valda jobbet?" msgstr[1] "Vill du verkligen stoppa alla valda jobben?" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "Vill du verkligen stoppa alla icke-enhets jobb?" @@ -12405,52 +12537,52 @@ msgstr "MiB" msgid "Modified" msgstr "Ändrad" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "Söknamn är \"(0)\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "Denna boks UUID är \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "Åtkomst nekad" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "I biblioteket" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "Storlek" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "Markerat för borttagning" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "Dubbelklicka för att <b>redigera</b> mig<br><br>" @@ -12501,7 +12633,7 @@ msgstr "Krymp kolumn om det är för brett för att passa" msgid "Restore default layout" msgstr "Återställ standardutformning" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -12547,17 +12679,17 @@ msgid "LRF Viewer toolbar" msgstr "LRF-visarens verktygsrad" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "Nästa sida" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "Föregående sida" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -12638,7 +12770,7 @@ msgstr "Välj en plats för Calibres nya e-bibliotek" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:136 msgid "Initializing user interface..." -msgstr "Startar anvåndargränssnitt" +msgstr "Startar användargränssnitt" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:164 msgid "Repairing failed" @@ -12659,7 +12791,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "Felaktig databasplats %r. Calibre kommer nu att avslutas." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "Skadad databas" @@ -12739,7 +12871,7 @@ msgstr "Ohanterat undantag" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "Kunde inte öppna %s. Kanske används det av ett annat program?" @@ -12883,10 +13015,6 @@ msgstr "&Bläddra" msgid "T&rim" msgstr "Justera" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "&Ta bort" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "Ladda ner &omslag" @@ -12915,15 +13043,6 @@ msgstr "Ogiltigt omslag" msgid "Could not change cover as the image is invalid." msgstr "Kunde inte ändra omslag så bilden är ogiltigt." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "Denna bok har inget omslag" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "Omslagsmått: %(width)d x %(height)d punkter" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "Etiketterna har ändrats" @@ -13001,11 +13120,11 @@ msgstr "Klar datum" msgid "Publishe&d:" msgstr "Publicera&d:" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "Schemalägg hämtning?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " @@ -13014,7 +13133,7 @@ msgstr "" "Nedladdning av metadata för de <b> %d valda boken (s) </b> kommer att köras " "i bakgrunden. Fortsätta?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." @@ -13022,7 +13141,7 @@ msgstr "" "Du kan övervaka nedladdningen genom att klicka på den roterande ratten i det " "nedre högra hörnet." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." @@ -13030,69 +13149,69 @@ msgstr "" "När nedladdningen är klar kommer du att frågas om bekräftelse innan Calibre " "utför nedladdning av metadata." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "Hämta endast &metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "Ladda endast ner omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "&Konfigurera nedladdning" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "Hämta &både" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "Hämta metadata för %d böcker" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "Metadata nedladdning började" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "(Misslyckades metadata)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "(Misslyckades omslag)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" -msgstr "Hämtat %(num)d av %(tot)d" +msgid "Processed %s" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:61 msgid "Downloaded metadata fields" msgstr "Hämtade metadatafält" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "Redigera metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "Nästa" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "Föregående" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " @@ -13102,7 +13221,7 @@ msgstr "" "Med den här knappen för att skapa titelsortering som kommer att ändra " "titelsortera från rött till grönt." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -13115,27 +13234,27 @@ msgstr "" "funktioner som finns tillgängliga under den här knappen. Klicka och håll på " "knappen för att se det." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "Angre författarsortering från författaren" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "Ange författare från författarsortering" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "Kopiera författare till författarsort" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "Byt plats på författare och titel" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" @@ -13143,9 +13262,13 @@ msgstr "" "Hantera författare. Används för att byta namn på författare och korrigera " "enskilda författarens sorteringsvärden" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" -msgstr "Ta bort oanvända serier (serier som inte har några böcker)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 msgid "" @@ -13171,66 +13294,66 @@ msgstr "Ändra hur Calibre laddar ner metadata" msgid " [%(num)d of %(tot)d]" msgstr " [%(num)d av %(tot)d]" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "Kunde inte läsa omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "Kunde inte läsa omslag från %s-format" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "Omslaget i %s-format är ogiltigt" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "Spara ändringar och redigera metadata för %s" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "Ändra omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "Ko&mmentarer" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "&Metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "&Omslag och format" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "&Anpassa eget metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "&Kommentarer" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "Grundläggande metadata" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "Har omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "Har sammandrag" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -13242,29 +13365,29 @@ msgstr "" "med ett omslag med ett omslag i \n" "omslagsnedladdningssteget, och vice versa." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "Se på" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "Calibre hämtar metadata från: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "Var god vänta" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "Fråga: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" "Misslyckades med att hämta metadata. Klicka på Visa detaljer för att se " "detaljer" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -13276,41 +13399,41 @@ msgstr "" "ett enda särskiljande ord i titeln. <p> För att se hela loggen, klicka på " "Visa detaljer." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "Nuvarande omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "Söker ..." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "Hämtar omslag för <b> %s </b>, var god att vänta ..." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" "Misslyckades med att hämta några omslag, klicka på \"Visa detaljer\" för " "detaljer." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "Kunde inte hitta några omslag för <b>%s </b>" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" "Fann <b>%(num)d</b> omslag av %(title)s. Välj den som du gillar bäst." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "Hämtar metadata ..." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "Hämtar omslag..." @@ -13338,35 +13461,35 @@ msgstr "Skriv över befintliga format" msgid "Create new record for each duplicate format" msgstr "Skapa nytt element för varje duplikat format" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " @@ -13376,11 +13499,11 @@ msgstr "" "i biblioteket. Calibre kan antingen läsa metadata från innehållet i filen " "eller från filnamnet." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "Läs &metadata från filens innehåll i stället för filnamn" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." @@ -13388,11 +13511,11 @@ msgstr "" "Byt plats på författarens förnamn och efternamn. Detta påverkar endast " "metadata som lästs från filnamnen." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "Byt plats på författarens förnamn och efternamn" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" @@ -13400,7 +13523,7 @@ msgstr "" "När du använder \"&Kopiera till bibliotek\" för att kopiera böcker mellan " "bibliotek, bevarar det datum" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -13422,12 +13545,12 @@ msgstr "" "Titeljämförelsen ignorerar ledande obestämd artikel (\"de\", \"A\", \"en\"), " "interpunktion, bokstäver etc. Författarjämförelse är exakt." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" "&Autosammanslagning av böcker om de redan finns i Calibres bibliotek:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -13463,11 +13586,11 @@ msgstr "" "interpunktion, bokstäver etc.\n" "Författarjämförelse är exakt." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "&Markeringar att använda när du lägger en bok:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" @@ -13475,39 +13598,15 @@ msgstr "" "En kommaavgränsad lista med taggar som kommer att tillämpas på böcker som " "har lagts till biblioteket" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "Konfigurera metadata från filnamn" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -13515,11 +13614,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -14475,6 +14602,7 @@ msgid "Never" msgstr "Aldrig" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "Efter första bokstaven" @@ -14493,7 +14621,7 @@ msgstr "Kolumn färg" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr " eller " @@ -15417,11 +15545,6 @@ msgstr "" "att ändra namnet sedan trycka på Spara. Du kan ändra värdet\n" "av en sökterm genom att ändra värdet i rutan sedan trycka på Spara." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "&Spara" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "Skapa &användarkategorier från:" @@ -15488,7 +15611,7 @@ msgstr "" "Inställningar-> Avancerat-> insticksprogram" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "Kunde inte starta medieservern" @@ -15509,12 +15632,12 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -15522,27 +15645,27 @@ msgstr "" "Den maximala storleken (breddxhöjd) som omslag får visas i. Större omslag " "skalas ned. " -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "Största omslagsstorlek:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "Server&port:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "Max. &OPDS-poster per fråga:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "Max. antal ogr&upperade OPDS-poster" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "Begränsning (sparad sökning) gäller:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " @@ -15553,43 +15676,41 @@ msgstr "" "sökningen. Denna inställning är per bibliotek (dvs du kan ha en annan " "begränsning per bibliotek)." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "&Starta servern" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "St&oppa servern" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "&Testa servern" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -15599,15 +15720,15 @@ msgstr "" "var som helst i världen med hjälp av en webbläsare. Eventuella ändringar i " "inställningarna träder i kraft först efter en serveromstart." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "Visa &serverloggar" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -16553,28 +16674,28 @@ msgstr "Ändra metadata för att många böcker kan ta ett tag. Är du säker?" msgid "Searches" msgstr "Sökningar" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "Byt namn på användarkategori" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" "Du kan inte använda punkter i namnet när du döper om användarkategorier" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "Namnet %s används redan" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "Kopiera sökningens namn" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "Namnet %s för den sparade sökningen används redan" @@ -16836,6 +16957,14 @@ msgstr "Visa alla kategorier" msgid "Change sub-categorization scheme" msgstr "Ändra sub-kategorisering systemet" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "Första bokstaven är användbart endast när man sorterar efter namn" @@ -16873,15 +17002,15 @@ msgstr "Köar " msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "Konvertera bok %(num)d av %(tot)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "Hämta nyheter från " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "Konvertering finns" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -16890,31 +17019,31 @@ msgstr "" "Följande böcker har redan konverterats till %s-format. Vill du konvertera " "dem en gång till?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "&Donera för att stödja Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "Åte&rställ" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "Mata ut ansluten &enhet" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "Avsluta Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "Rensa sökning" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "Felsökningsläge" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -16924,11 +17053,11 @@ msgstr "" "Du har startat Caliber i felsökningsläge. När du har avslutat Caliber kommer " "felsökningsloggen finnas i filen: %s <p> logg visas automatiskt." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -16936,7 +17065,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -16944,23 +17073,23 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "Konverteringen misslyckades" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "Recept inaktiverat" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "<b>Misslyckades</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Det finns aktiva jobb. Är du säker på att du vill avsluta?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" @@ -16970,11 +17099,11 @@ msgstr "" " Om du avslutar nu kan enheten skadas. <br>\n" " Är du säker på att du vill avsluta ändå?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "Aktiva jobb" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -17034,27 +17163,27 @@ msgstr "Det finns %d tilläggsuppdateringar tillgängliga" msgid "Install and configure user plugins" msgstr "Installera och konfigurera användartillägg" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "Redigera bokmärke" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "Ny titel för bokmärke" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "Exportera bokmärken" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "Sparade bokmärken (*. pickle)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "Importera bokmärken" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "Valda bokmärken (*.pickle)" @@ -17175,7 +17304,7 @@ msgid "Mouse &wheel flips pages" msgstr "Mus & hjul byter sidor" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -17231,17 +17360,17 @@ msgstr "Användare & Stylesheet" msgid "No results found for:" msgstr "Inga resultat hittades för:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "Alternativ för att anpassa läsplattan" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "Kom ihåg senast använd fönsterstorlek" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." @@ -17249,74 +17378,74 @@ msgstr "" "Ange personlig CSS-stilmall. Detta kan användas för att anpassa utseendet på " "alla böcker." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" "Ändra storlek på bilder som är större än visningsfönstret för att de skall " "få plats inuti" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "Avstava text" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "Standardspråk för avstavningsregler" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "Spara nuvarande position i dokumentet, när de slutar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "Låt mushjulet växla sidor" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" "Den tid i sekunder för sidan sidväxlingsanimation. Standard är en halv " "sekund." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "Teckensnittsalternativ" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "Familj för serif-teckensnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "Familj för sans serif-teckensnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "Familj för fast bredd-teckensnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "Standardtextstorlek i px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "Teckenstorlek för fast bredd i px" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "Typ av standardteckensnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "Fortfarande redigering" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." @@ -17324,40 +17453,40 @@ msgstr "" "Du är mitt i redigering av ett kortkommando först avsluta det, genom att " "klicka utanför den genvägen redigering rutan." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "&Leta i ordlista" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "Gå till..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "Nästa avsnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "Föregående avsnitt" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "Dokumentets början" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "Dokumentets slut" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "Avsnittets början" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "Avsnittets slut" @@ -17409,73 +17538,73 @@ msgstr "Rulla åt vänster" msgid "Scroll right" msgstr "Rulla åt höger" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "Bokformat" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "Plats i bok" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "Gå till en referens. För att få referensnummer, använd referensläge." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "Sök text i bok" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "Förhandsgranska" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "Tydlig lista över nyligen öppnade böcker" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "Ansluter till dict.org att slå upp: <b>%s</b>…" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "Välj e-bok" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "E-böcker" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" @@ -17484,80 +17613,80 @@ msgstr "" "Använd fontstorlek %(which)s\n" "Nuvarande förstoring: %(mag).1f" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "Större" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "mindre" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "Inga träffar hittades för: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "Laddar flöde..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "Formaterar %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "Bokmärk #%d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "Lägg till bokmärke" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "Ange titel för bokmärke:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "Hantera bokmärken" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "Laddar e-bok...." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "Kunde inte öppna e-bok" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "Alternativ för att styra läsplattan" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "Om angivet, kommer läsfönstret att försöka lägga sig överst vid start." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" "Om vald kommer visningsfönstret försöker öppna helskärm när den startas." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "Skriv javaskriptnotifieringar och konsolmeddelanden till konsolen" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -17812,10 +17941,6 @@ msgstr "" "<p> Välj en plats för dina böcker. När du lägger böcker i Caliber, kommer de " "att kopieras här. Använd en <b> tom mapp </b> för en ny kaliber biblioteket:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "Ändra" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -19285,17 +19410,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)sMedelbetyg är %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "<p>Migrera den gamla databasen till e-bokbibliotek i %s <br><center>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "Kopierar <b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "Komprimerar databas" @@ -19573,7 +19698,7 @@ msgstr "Alla böcker" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "Nyaste" @@ -19752,40 +19877,40 @@ msgstr "" "Hela gränssnittet ger dig många fler funktioner, men det kan inte fungera " "bra på en liten skärm" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "%d bok" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "%d föremål" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "BETYG: %s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "TAGGAR: %s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "SERIER: %(series)s [%(sidx)s]<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "Böcker i ditt bibliotek" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "Genom att " -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "Böcker sorterade efter " @@ -19887,14 +20012,10 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" -"Välj vilka kolumner som ska sökas när du inte använder prefix, som till " -"exempel när man söker efter Red istället för titel: Red. Skriv en lista med " -"sök / uppslags namn separerade med kommatecken. Har bara effekt om du anger " -"alternativet att begränsa sökningen till kolumnerna ovan." #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:31 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182 @@ -20926,106 +21047,106 @@ msgstr "Okänd artikel" msgid "Unknown News Source" msgstr "Okänd nyhetskälla" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "\"%s\"-receptet behöver ett användarnamn och lösenord." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "Hämtningen är färdig" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "Kunde inte hämta följande artiklar:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "Kunde inte hämta delar av följande artiklar:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr " från " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "\tMisslyckade länkar:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "Kunde inte hämta artikeln." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "Den felsökningsspårning finns tidigare i denna logg" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "Kör med -vv för att se orsaken" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "Hämtar flöden..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "Mottagit flöden från indexsidan" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "Försöker hämta omslaget ..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "Skapar redaktionsruta..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "Påbörjar hämtning [%d tråd(ar)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "Flöden hämtade till %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "Kunde inte hämta omslag: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "Hämtar omslag från %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "Redaktionslogga hämtad" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "Namnlös artikel" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "Artikel hämtad: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "Artikeln kunde inte hämtas: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "Hämtar flöde" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." @@ -21033,7 +21154,7 @@ msgstr "" "Kunde inte logga in, kontrollera ditt användarnamn och lösenord för Calibres " "prenumerationstjänst." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/ta.po b/src/calibre/translations/ta.po index ebd0d57d4e..6d75beb7e3 100644 --- a/src/calibre/translations/ta.po +++ b/src/calibre/translations/ta.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" "PO-Revision-Date: 2011-08-05 17:54+0000\n" "Last-Translator: Kovid Goyal <Unknown>\n" "Language-Team: Tamil <ta@li.org>\n" @@ -15,8 +15,8 @@ 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-03-25 04:59+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:49+0000\n" +"X-Generator: Launchpad (build 15149)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" @@ -26,8 +26,8 @@ msgstr "நிச்சயமாக எதுவும் செய்யாத #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -38,9 +38,9 @@ msgstr "நிச்சயமாக எதுவும் செய்யாத #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -78,9 +78,9 @@ msgstr "நிச்சயமாக எதுவும் செய்யாத #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -90,7 +90,7 @@ msgstr "நிச்சயமாக எதுவும் செய்யாத #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -100,16 +100,20 @@ msgstr "நிச்சயமாக எதுவும் செய்யாத #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -137,20 +141,20 @@ msgstr "நிச்சயமாக எதுவும் செய்யாத #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -158,25 +162,24 @@ msgstr "நிச்சயமாக எதுவும் செய்யாத #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -184,14 +187,15 @@ msgstr "நிச்சயமாக எதுவும் செய்யாத #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -931,21 +935,21 @@ msgstr "" msgid "Debug log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "" @@ -1061,21 +1065,21 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1083,8 +1087,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "" @@ -1133,20 +1137,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "" @@ -1154,8 +1158,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "" @@ -1165,8 +1169,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "" @@ -1174,13 +1178,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "" @@ -1444,11 +1448,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "" @@ -1785,23 +1789,23 @@ msgstr "" msgid "Communicate with the Pico reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "" @@ -2064,36 +2068,36 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "" @@ -2410,56 +2414,56 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2468,7 +2472,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "" @@ -3091,7 +3095,7 @@ msgid "Set the publication date." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." +msgid "Set the book timestamp (no longer used anywhere)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 @@ -3185,27 +3189,35 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "" @@ -3523,19 +3535,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" @@ -3552,7 +3564,7 @@ msgid "Producer" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3596,7 +3608,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "" @@ -3708,59 +3720,59 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 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:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "" @@ -3828,78 +3840,79 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 -msgid "Index" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 -msgid "Glossary" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 -msgid "Acknowledgements" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 -msgid "Bibliography" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 -msgid "Colophon" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 -msgid "Copyright" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 -msgid "Dedication" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 -msgid "Epigraph" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 -msgid "Foreword" +msgid "Title Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 -msgid "List of Illustrations" +msgid "Index" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 -msgid "List of Tables" +msgid "Glossary" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 -msgid "Notes" +msgid "Acknowledgements" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 -msgid "Preface" +msgid "Bibliography" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +msgid "Colophon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 +msgid "Copyright" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 +msgid "Dedication" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 +msgid "Epigraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 +msgid "Foreword" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 +msgid "List of Illustrations" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 +msgid "List of Tables" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 +msgid "Notes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 +msgid "Preface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "" @@ -4143,155 +4156,155 @@ msgstr "" msgid "Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "" @@ -4397,18 +4410,18 @@ msgid "Shift+A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "" @@ -4418,7 +4431,7 @@ msgid "Cannot add files as no books are selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "" @@ -4561,6 +4574,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "" @@ -4622,7 +4639,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "" @@ -4681,7 +4698,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "" @@ -4797,7 +4814,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "" @@ -4831,23 +4848,23 @@ msgstr "" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -4914,9 +4931,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5124,98 +5141,98 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5223,27 +5240,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5252,7 +5269,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5265,7 +5282,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5277,15 +5294,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5669,7 +5686,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "" @@ -5761,12 +5778,12 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -5894,7 +5911,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -5937,7 +5954,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -5962,7 +5979,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "" @@ -5980,17 +5997,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6064,7 +6081,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6075,7 +6092,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6491,7 +6508,7 @@ msgid "Bulk Convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "" @@ -7047,7 +7064,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" @@ -7058,33 +7075,44 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr "" @@ -7148,7 +7176,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "" @@ -7324,23 +7352,33 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "" @@ -7392,62 +7430,143 @@ msgstr "" msgid "Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "" @@ -7773,11 +7892,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8205,7 +8324,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "" @@ -8382,7 +8501,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "" @@ -8510,7 +8629,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8526,7 +8645,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8567,7 +8686,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "" @@ -8600,11 +8719,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "" @@ -8619,13 +8738,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8705,8 +8824,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "" @@ -8753,17 +8872,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "" @@ -8851,41 +8970,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -8898,7 +9023,7 @@ msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9079,7 +9204,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9223,13 +9348,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9398,7 +9523,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" @@ -9412,7 +9537,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "" @@ -9961,62 +10086,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10145,35 +10270,35 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10181,49 +10306,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10231,45 +10356,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10277,14 +10402,14 @@ msgstr "" msgid "&Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -10585,90 +10710,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11063,43 +11196,43 @@ msgstr "" msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11276,52 +11409,52 @@ msgstr "" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11372,7 +11505,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11416,17 +11549,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11524,7 +11657,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -11601,7 +11734,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -11725,10 +11858,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -11757,15 +11886,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -11838,65 +11958,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -11904,33 +12024,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -11938,34 +12058,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -11991,66 +12115,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12058,27 +12182,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12086,38 +12210,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12143,62 +12267,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12211,11 +12335,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12235,49 +12359,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12285,11 +12385,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13148,6 +13276,7 @@ msgid "Never" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "" @@ -13166,7 +13295,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr "" @@ -13973,11 +14102,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14030,7 +14154,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "" @@ -14051,96 +14175,94 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -14974,27 +15096,27 @@ msgstr "" msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15244,6 +15366,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15279,46 +15409,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15326,11 +15456,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15338,7 +15468,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15346,34 +15476,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15429,27 +15559,27 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -15567,7 +15697,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15619,125 +15749,125 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -15789,151 +15919,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16169,10 +16299,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17321,17 +17447,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -17569,7 +17695,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "" @@ -17732,40 +17858,40 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -17859,7 +17985,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -18723,112 +18849,112 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/te.po b/src/calibre/translations/te.po index b30b27f84b..a34df31797 100644 --- a/src/calibre/translations/te.po +++ b/src/calibre/translations/te.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" "PO-Revision-Date: 2011-08-05 17:01+0000\n" "Last-Translator: Kovid Goyal <Unknown>\n" "Language-Team: Telugu <te@li.org>\n" @@ -15,8 +15,8 @@ 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-03-25 05:00+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:50+0000\n" +"X-Generator: Launchpad (build 15149)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" @@ -26,8 +26,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -38,9 +38,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -78,9 +78,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -90,7 +90,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -100,16 +100,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -137,20 +141,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -158,25 +162,24 @@ msgstr "" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -184,14 +187,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -931,21 +935,21 @@ msgstr "" msgid "Debug log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "" @@ -1061,21 +1065,21 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "వార్తలు" @@ -1083,8 +1087,8 @@ msgstr "వార్తలు" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "" @@ -1133,20 +1137,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "పరికరంలో ఉన్న పుస్తకాల జాబితాని తెస్తున్నాం..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "" @@ -1154,8 +1158,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "" @@ -1165,8 +1169,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "" @@ -1174,13 +1178,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "" @@ -1444,11 +1448,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "" @@ -1785,23 +1789,23 @@ msgstr "" msgid "Communicate with the Pico reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "" @@ -2064,36 +2068,36 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "" @@ -2410,56 +2414,56 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2468,7 +2472,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "అన్ని వ్యాసాలు" @@ -3091,7 +3095,7 @@ msgid "Set the publication date." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." +msgid "Set the book timestamp (no longer used anywhere)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 @@ -3185,27 +3189,35 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "" @@ -3520,19 +3532,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "శీర్షిక" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "రచయిత(లు)" @@ -3549,7 +3561,7 @@ msgid "Producer" msgstr "నిర్మాత" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3593,7 +3605,7 @@ msgstr "కాలముద్ర" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "ప్రచురితం" @@ -3705,59 +3717,59 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 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:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "" @@ -3825,78 +3837,79 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "శీర్షిక పేజీ" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "విషయ సూచిక" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +msgid "Title Page" +msgstr "శీర్షిక పేజీ" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 msgid "Index" msgstr "సూచిక" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 msgid "Glossary" msgstr "పదకోశం" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 msgid "Acknowledgements" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 msgid "Bibliography" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 msgid "Colophon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 msgid "Copyright" msgstr "కాపీహక్కులు" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 msgid "Dedication" msgstr "అంకితం" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 msgid "Foreword" msgstr "ముందుమాట" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 msgid "List of Illustrations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 msgid "List of Tables" msgstr "పట్టికల జాబితా" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 msgid "Notes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 msgid "Preface" msgstr "పీఠిక" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "ముఖ్య పాఠ్యం" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "" @@ -4140,155 +4153,155 @@ msgstr "" msgid "Table of Contents:" msgstr "విషయ సూచిక:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "" @@ -4394,18 +4407,18 @@ msgid "Shift+A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "" @@ -4415,7 +4428,7 @@ msgid "Cannot add files as no books are selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "" @@ -4558,6 +4571,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "" @@ -4619,7 +4636,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "" @@ -4678,7 +4695,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "" @@ -4794,7 +4811,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "" @@ -4828,23 +4845,23 @@ msgstr "" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -4911,9 +4928,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5121,98 +5138,98 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5220,27 +5237,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5249,7 +5266,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5262,7 +5279,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5274,15 +5291,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5666,7 +5683,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "" @@ -5758,12 +5775,12 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -5891,7 +5908,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -5934,7 +5951,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -5959,7 +5976,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "" @@ -5977,17 +5994,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6061,7 +6078,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6072,7 +6089,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6488,7 +6505,7 @@ msgid "Bulk Convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "" @@ -7044,7 +7061,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" @@ -7055,33 +7072,44 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr "" @@ -7145,7 +7173,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "" @@ -7321,23 +7349,33 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "" @@ -7389,62 +7427,143 @@ msgstr "" msgid "Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "" @@ -7770,11 +7889,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8202,7 +8321,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "" @@ -8379,7 +8498,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "" @@ -8507,7 +8626,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8523,7 +8642,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8564,7 +8683,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "" @@ -8597,11 +8716,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "తేదీ" @@ -8616,13 +8735,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8702,8 +8821,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "" @@ -8750,17 +8869,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "" @@ -8848,41 +8967,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -8895,7 +9020,7 @@ msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9076,7 +9201,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9220,13 +9345,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9395,7 +9520,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" @@ -9409,7 +9534,7 @@ msgstr "&సంకేతపదం:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "" @@ -9958,62 +10083,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10142,35 +10267,35 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10178,49 +10303,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10228,45 +10353,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10274,14 +10399,14 @@ msgstr "" msgid "&Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -10582,90 +10707,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11060,43 +11193,43 @@ msgstr "" msgid "Unavailable" msgstr "అందుబాటులో లేదు" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11273,52 +11406,52 @@ msgstr "పరిమాణం (మెబై)" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11369,7 +11502,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11413,17 +11546,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "తర్వాతి పేజీ" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11521,7 +11654,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -11598,7 +11731,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -11722,10 +11855,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -11754,15 +11883,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -11835,65 +11955,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -11901,33 +12021,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -11935,34 +12055,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -11988,66 +12112,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12055,27 +12179,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12083,38 +12207,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12140,62 +12264,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12208,11 +12332,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12232,49 +12356,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12282,11 +12382,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13145,6 +13273,7 @@ msgid "Never" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "" @@ -13163,7 +13292,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr "" @@ -13970,11 +14099,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14027,7 +14151,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "" @@ -14048,96 +14172,94 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -14971,27 +15093,27 @@ msgstr "" msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15241,6 +15363,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15276,46 +15406,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15323,11 +15453,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15335,7 +15465,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15343,34 +15473,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15426,27 +15556,27 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -15564,7 +15694,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15616,125 +15746,125 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -15786,151 +15916,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16166,10 +16296,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17318,17 +17444,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -17566,7 +17692,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "" @@ -17729,40 +17855,40 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -17856,7 +17982,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -18720,112 +18846,112 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/th.po b/src/calibre/translations/th.po index bd0e308231..165dea1544 100644 --- a/src/calibre/translations/th.po +++ b/src/calibre/translations/th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" "PO-Revision-Date: 2011-12-15 15:14+0000\n" "Last-Translator: akarong <Unknown>\n" "Language-Team: Thai <th@li.org>\n" @@ -15,8 +15,8 @@ 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-03-25 05:00+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:50+0000\n" +"X-Generator: Launchpad (build 15149)\n" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:418 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:439 @@ -36,8 +36,8 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -48,9 +48,9 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -88,9 +88,9 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -100,7 +100,7 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -110,16 +110,20 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -147,20 +151,20 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -168,25 +172,24 @@ msgstr "ไม่มีอะไรเลย" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -194,14 +197,15 @@ msgstr "ไม่มีอะไรเลย" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -956,11 +960,11 @@ msgstr "การ์ด ข" msgid "Debug log" msgstr "บันทึกการแก้จุดเสีย" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "ติดต่อกับโทรศัพท์แอนดรอยด์" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -968,11 +972,11 @@ msgstr "" "รายการไดเรคตอรี่ที่คั่นด้วยคอมม่าเพื่อส่งอีบุคส์ไปยังอุปกรณ์ปลายทางซึ่งจะใช้ช" "ื่อที่พบครั้งแรกก่อน" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "ติดต่อกับโทรศัพท์ S60" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "" @@ -1097,21 +1101,21 @@ msgstr "" "กดปุ่ม 'แสดงรายละเอียด' เพื่อแสดงรายการ" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "ข่าว" @@ -1119,8 +1123,8 @@ msgstr "ข่าว" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "บัญชีรายชื่อ" @@ -1169,20 +1173,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "เรียกรายการหนังสือจากอุปกรณ์ปลายทาง" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "ถ่ายหนังสือลงในอุปกรณ์ปลายทาง" @@ -1190,8 +1194,8 @@ msgstr "ถ่ายหนังสือลงในอุปกรณ์ปล #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "เพิ่มหนังสือในรายการชุดข้อมูลในอุปกรณ์ปลายทาง" @@ -1201,8 +1205,8 @@ msgstr "เพิ่มหนังสือในรายการชุดข #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "ลบหนังสือออกจากอุปกรณ์ปลายทาง" @@ -1210,13 +1214,13 @@ msgstr "ลบหนังสือออกจากอุปกรณ์ปล #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "ลบหนังสือออกจากรายการชุดข้อมูลในอุปกรณ์ปลายทาง" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "ส่งชุดข้อมูลไปยังอุปกรณ์ปลายทาง" @@ -1482,11 +1486,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "ติดต่อกับ Kindle DX eBook reader" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "" @@ -1829,23 +1833,23 @@ msgstr "" msgid "Communicate with the Pico reader." msgstr "ติดต่อกับเครื่องอ่านพิคโก" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "ติดต่อกับ iPapyrus reader" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "ติดต่อกับ Sovos reader" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "" @@ -2109,15 +2113,15 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "ควบคุมระบบตรวจสอบโครงสร้างเอกสารอัตโนมัติ" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " @@ -2126,21 +2130,21 @@ msgstr "" "ควบคุมระบบการสร้างสารบาญอัตโนมัติ " "โดยปกติหากแหล่งต้นทางไฟล์มีสารบาญอยู่แล้วมันจะถูกเรียกใช้ก่อน" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "ตัวเลือกที่จะกำหนดชุดข้อมูลเอาท์พุท" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "ตัวเลือกที่จะช่วยในการตรวจหาจุดผิดพลาดในการแปลงค่า" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "" @@ -2493,56 +2497,56 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2551,7 +2555,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "" @@ -3228,8 +3232,8 @@ msgid "Set the publication date." msgstr "กำหนดวันที่พิมพ์" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." -msgstr "ตั้งค่าเวลาของหนังสือ (จะถูกใช้ในคอลัมวันที่ในโปรแกรมคาริเบอร์)" +msgid "Set the book timestamp (no longer used anywhere)" +msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 msgid "" @@ -3322,27 +3326,35 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "ไม่พบอีบุคส์ในที่เก็บไฟล์" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "ไม่สามารถใส่วันเวลาลงไปได้" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "แปลงอินพุทเป็น HTML" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "กำลังทำการแปลงอีบุ๊ค" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "กำลังสร้าง" @@ -3662,19 +3674,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" @@ -3691,7 +3703,7 @@ msgid "Producer" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3735,7 +3747,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "" @@ -3847,59 +3859,59 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 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:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "" @@ -3967,78 +3979,79 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 -msgid "Index" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 -msgid "Glossary" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 -msgid "Acknowledgements" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 -msgid "Bibliography" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 -msgid "Colophon" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 -msgid "Copyright" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 -msgid "Dedication" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 -msgid "Epigraph" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 -msgid "Foreword" +msgid "Title Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 -msgid "List of Illustrations" +msgid "Index" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 -msgid "List of Tables" +msgid "Glossary" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 -msgid "Notes" +msgid "Acknowledgements" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 -msgid "Preface" +msgid "Bibliography" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +msgid "Colophon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 +msgid "Copyright" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 +msgid "Dedication" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 +msgid "Epigraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 +msgid "Foreword" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 +msgid "List of Illustrations" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 +msgid "List of Tables" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 +msgid "Notes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 +msgid "Preface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "" @@ -4282,155 +4295,155 @@ msgstr "" msgid "Table of Contents:" msgstr "สารบาญ" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "" @@ -4536,18 +4549,18 @@ msgid "Shift+A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "" @@ -4557,7 +4570,7 @@ msgid "Cannot add files as no books are selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "" @@ -4700,6 +4713,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "" @@ -4761,7 +4778,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "" @@ -4820,7 +4837,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "" @@ -4936,7 +4953,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "" @@ -4970,23 +4987,23 @@ msgstr "" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5053,9 +5070,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5263,98 +5280,98 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5362,27 +5379,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5391,7 +5408,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5404,7 +5421,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5416,15 +5433,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5808,7 +5825,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "" @@ -5900,12 +5917,12 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -6033,7 +6050,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -6076,7 +6093,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -6101,7 +6118,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "" @@ -6119,17 +6136,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6203,7 +6220,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6214,7 +6231,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6630,7 +6647,7 @@ msgid "Bulk Convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "" @@ -7186,7 +7203,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" @@ -7197,33 +7214,44 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr "" @@ -7287,7 +7315,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "" @@ -7463,23 +7491,33 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "" @@ -7531,62 +7569,143 @@ msgstr "" msgid "Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "" @@ -7912,11 +8031,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8344,7 +8463,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "" @@ -8521,7 +8640,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "" @@ -8649,7 +8768,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8665,7 +8784,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8706,7 +8825,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "" @@ -8739,11 +8858,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "" @@ -8758,13 +8877,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8844,8 +8963,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "" @@ -8892,17 +9011,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "" @@ -8990,41 +9109,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -9037,7 +9162,7 @@ msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9218,7 +9343,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9362,13 +9487,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9537,7 +9662,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" @@ -9551,7 +9676,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "" @@ -10100,62 +10225,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10284,35 +10409,35 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10320,49 +10445,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10370,45 +10495,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10416,14 +10541,14 @@ msgstr "" msgid "&Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -10724,90 +10849,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11202,43 +11335,43 @@ msgstr "" msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11415,52 +11548,52 @@ msgstr "" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11511,7 +11644,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11555,17 +11688,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11663,7 +11796,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -11740,7 +11873,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -11864,10 +11997,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -11896,15 +12025,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -11977,65 +12097,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -12043,33 +12163,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -12077,34 +12197,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -12130,66 +12254,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12197,27 +12321,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12225,38 +12349,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12282,62 +12406,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12350,11 +12474,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12374,49 +12498,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12424,11 +12524,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13287,6 +13415,7 @@ msgid "Never" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "" @@ -13305,7 +13434,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr "" @@ -14112,11 +14241,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14169,7 +14293,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "" @@ -14190,96 +14314,94 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -15113,27 +15235,27 @@ msgstr "" msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15383,6 +15505,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15418,46 +15548,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15465,11 +15595,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15477,7 +15607,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15485,34 +15615,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15568,27 +15698,27 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -15706,7 +15836,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15758,125 +15888,125 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -15928,151 +16058,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16308,10 +16438,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17460,17 +17586,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -17708,7 +17834,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "" @@ -17871,40 +17997,40 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -17998,7 +18124,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -18862,112 +18988,112 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/tr.po b/src/calibre/translations/tr.po index fd13d3a9fa..27ef4f01a5 100644 --- a/src/calibre/translations/tr.po +++ b/src/calibre/translations/tr.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" -"PO-Revision-Date: 2012-03-09 08:39+0000\n" -"Last-Translator: semih.iseri <semih.iseri@gmail.com>\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" +"PO-Revision-Date: 2012-04-30 14:36+0000\n" +"Last-Translator: ismail yenigul <Unknown>\n" "Language-Team: Turkish <tr@li.org>\n" "MIME-Version: 1.0\n" "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-03-25 05:00+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-05-01 05:28+0000\n" +"X-Generator: Launchpad (build 15171)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" @@ -26,8 +26,8 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -38,9 +38,9 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -78,9 +78,9 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -90,7 +90,7 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -100,16 +100,20 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -137,20 +141,20 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -158,25 +162,24 @@ msgstr "Hiçbir şey yapmaz" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -184,14 +187,15 @@ msgstr "Hiçbir şey yapmaz" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -804,6 +808,7 @@ msgstr "768x1024 çözünürlüğe sahip iPad ve benzer cihazları hedefler." msgid "" "Intended for the iPad 3 and similar devices with a resolution of 1536x2048" msgstr "" +"Çözünürlüğü 1536x2048 olan iPad 3 ve benzeri cihazlar için düşünülmüştür" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:447 msgid "Intended for generic tablet devices, does no resizing of images" @@ -976,11 +981,11 @@ msgstr "Kart B" msgid "Debug log" msgstr "Hata ayıklama logu" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "Android telefonlar ile iletişim kur." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -988,11 +993,11 @@ msgstr "" "Aygıtta e-kitapların gönderileceğin klasörlerin virgülle ayrılmış listesi. " "Var olan ilk klasör kullanılacaktır." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "S60 telefonlar ile haberleş." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "WebOS tablet ile bağlantı kur" @@ -1135,21 +1140,21 @@ msgstr "" "Listeyi görmek için \"Ayrıntıları Göster\"e tıklayın." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Haberler" @@ -1157,8 +1162,8 @@ msgstr "Haberler" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "Katalog" @@ -1213,20 +1218,20 @@ msgstr "Bambook" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "Cihazdaki kitapların listesi alınıyor..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "Kitaplar cihaza aktarılıyor..." @@ -1234,8 +1239,8 @@ msgstr "Kitaplar cihaza aktarılıyor..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "Donanım metadata listesine kitaplar ekleniyor ..." @@ -1245,8 +1250,8 @@ msgstr "Donanım metadata listesine kitaplar ekleniyor ..." #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "Cihazdaki kitaplar kaldırılıyor..." @@ -1254,13 +1259,13 @@ msgstr "Cihazdaki kitaplar kaldırılıyor..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "Donanım metadata listesinden kitaplar çıkarılıyor ..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "Metadata bilgileri cihaza gönderiliyor..." @@ -1447,7 +1452,7 @@ msgstr "JetBook Mini okuyucu ile iletişim kur." #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:143 msgid "Communicate with the JetBook Color reader." -msgstr "" +msgstr "JetBook Color okuyucu ile bağlantı kur" #: /home/kovid/work/calibre/src/calibre/devices/kindle/apnx.py:32 #, python-format @@ -1534,11 +1539,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "Kindle DX eBook reader ile bağlantı kur" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "Kindle Fire ile iletişim kur." @@ -1905,6 +1910,10 @@ msgid "" "the T1 sets it. This means it will only show the first author for books with " "multiple authors. Leave this disabled if you use Metadata Plugboards." msgstr "" +"Eğer Sony üzerindeki yazar isimlerinin T1'deki kullanıldığı şekilde görmek " +"istiyorsanız bu özelliği seçin. Bunun anlamı çoklu yazarı olan kitaplarda " +"sadece ilk yazarın adı gösterilecektir. Eğer Metadata Plugboards " +"kullanıyorsanız bu özelliği iptal edin" #: /home/kovid/work/calibre/src/calibre/devices/sne/driver.py:17 msgid "Communicate with the Samsung SNE eBook reader." @@ -1926,23 +1935,23 @@ msgstr "Archos okuyucusu ile iletişim kur." msgid "Communicate with the Pico reader." msgstr "Pico okuyucusu ile iletişim kur." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "iPapyrus okuyucusu ile iletişim kur." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "Sovos okuyucusu ile iletişim kur." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "Sunstech EB700 okuyucusu ile iletişim kur." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "Stash W950 okuyucusu ile iletişim kur." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "Wexler okuyucusu ile iletişim kur." @@ -2257,17 +2266,17 @@ msgstr "" "kullanabilirsiniz." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" "Kullanıcı tanımlı motifleri kullanarak dökümanın yazılarını ve yapısını " "değiştir." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "dosya yapısının otomatik farkınıa varma kontrolü" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " @@ -2276,15 +2285,15 @@ msgstr "" "İçindekiler(TOC)'un otomatik oluşturulma ayarını düzenleyin. Eğer kaynak " "içindekiler(TOC)'e sahipse varsayılan olarak o kullanılacaktır." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "Çıkış almak için metadata seçeneklerini kaydet." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "Dönüştürme hatalarını bulmak için yardım seçenekleri" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" @@ -2293,7 +2302,7 @@ msgstr "" "şu şekilde e-kitaplar oluşturabilirsiniz: ebook-convert " "\"HaberTarifininAdı.recipe\" çıktıAdı.epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "Çıktıyı şuraya kaydet" @@ -2682,13 +2691,13 @@ msgstr "İçe alınacak monospace ailesinden fontlar" msgid "Comic" msgstr "Karikatür" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" "Mevcut olduğunda dökümanların yazarları olarak author sort alanındaki " "bilgiyi kullan." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." @@ -2696,20 +2705,20 @@ msgstr "" "Kitaba İçindekiler (TOC) ekleme. Eğer kitap içeriğinde zaten bir İçindekiler " "bölümü varsa bu seçeneği kullanabilirsiniz." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "Oluşturulan İçindekiler (TOC) bölümü için başlık." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "Dosya içeriklerinin sıkıştırılmasını engelle." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " @@ -2719,7 +2728,7 @@ msgstr "" "işaretlenmezse \"MOBI output plugin\" eklentisi girdideki kenar boşluklarını " "belirlemeye çalışacak, işaretlenirse boşlukları dikkate almayacak." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." @@ -2727,7 +2736,7 @@ msgstr "" "İçindekileri (TOC) kitabın sonuna değil başına ekleyin (eklenecekse). " "Önerilmez." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." @@ -2735,7 +2744,7 @@ msgstr "" "MOBI dosyasının içeriğini belirtilen klasöre çıkar. Eğer klasör zaten " "mevcutsa içeriği silinir." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " @@ -2746,7 +2755,7 @@ msgstr "" "okunan yere otomatik olarak senkronize edilmeyeceği anlamına gelir. " "Şikayetlerinizi Amazon'a bildirin." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2755,7 +2764,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "Tüm makaleler" @@ -2800,6 +2809,8 @@ msgid "" "The unit of measure. Default is inch. Choices are %s Note: This does not " "override the unit for margins!" msgstr "" +"Ölçü birimi. Öntanımlısı inçdir. Seçenekler %s Not: Bu kenarlıklar için " +"seçilen biriminde değişiklik yapmaz" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:75 #, python-format @@ -2816,6 +2827,8 @@ 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 "" +"Döküman için özel boyut. genişlikxyükselik formatında yazınız. Örnek: " +"'123x321'. Bu belirtilen herhangi bir kağıt boyutu değerinin üzerine yazar." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:84 #, python-format @@ -2873,6 +2886,9 @@ msgid "" "first and then try it.\n" "%s" msgstr "" +"Calibre RTF dosya formatını desteklememektedir. Dosyayı HTML formatına " +"çevirdikten sonra deneyin.\n" +"%s" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/snb_output.py:22 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/tcr_output.py:21 @@ -3009,6 +3025,10 @@ msgid "" "* markdown: Produce Markdown formatted text.\n" "* textile: Produce Textile formatted text." msgstr "" +"Dökümanda kullanılan formatlar\n" +"* düz: Düz metin üretir\n" +"* markdown: Markdownformata metin üreti\n" +"*dokuma: Dokuma formatında metin üretir" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/txt_output.py:58 msgid "" @@ -3016,6 +3036,9 @@ msgid "" "with a txt-output-formatting option that is not none because links are " "always removed with plain text output." msgstr "" +"Dökümandaki bağlantıları kaldırma. Bu sadece txt-output-formatting seçeneği " +"ile birlikte kullanıldığında işe yarar. Çünkü düz metin çıktılarında " +"bağlantılar her zaman kaldırılır." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/txt_output.py:63 msgid "" @@ -3023,6 +3046,9 @@ msgid "" "paired with a txt-output-formatting option that is not none because links " "are always removed with plain text output." msgstr "" +"Dökümandaki resim referanslarını kaldırma. Bu sadece txt-output-formatting " +"seçeneği ile birlikte kullanıldığında işe yarar. Çünkü düz metin " +"çıktılarında bağlantılar her zaman kaldırılır." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/txt_output.py:68 msgid "" @@ -3498,10 +3524,8 @@ msgid "Set the publication date." msgstr "Basım tarihini ayarla" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." -msgstr "" -"Kitabın tarih bilgisini ayarla (calibre'de tarih sütunu tarafından " -"kullanılır)" +msgid "Set the book timestamp (no longer used anywhere)" +msgstr "Kitap zamandamgasını tanımla(Artık kullanılmıyor)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 msgid "" @@ -3612,29 +3636,37 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "sr3-search aramasıyle bulunan metin için yeni değer." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "Arşiv içerisinde e-kitap bulunamadı" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" "Seri içerisindeki sıra ve beğeni değeri sayı olmak zorundadır . Gözardı " "ediliyor." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "Tarih/saat çözümlenemedi." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "Girdi HTML ye çevriliyor ..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "E-kitap dönüştürmeleri çalışıyor ..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "Oluşturuluyor" @@ -3649,7 +3681,7 @@ msgstr "ePub Düzeltici" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/epubcheck.py:17 msgid "Workaround epubcheck bugs" -msgstr "" +msgstr "epubcheck hataları için ara çözüm" #: /home/kovid/work/calibre/src/calibre/ebooks/epub/fix/epubcheck.py:21 msgid "" @@ -3765,7 +3797,7 @@ msgstr "%s dosyası boş" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:564 #, python-format msgid "Failed to parse link %(tag)s %(children)s" -msgstr "" +msgstr "%(tag)s %(children)s bağlantısında ayrıştırma hatası" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:609 #, python-format @@ -3863,7 +3895,7 @@ msgstr "Çıktı dosyasının yolu" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:290 msgid "Verbose processing" -msgstr "" +msgstr "Ayrıntılı işleme" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:292 msgid "Convert LRS to LRS, useful for debugging." @@ -3972,19 +4004,19 @@ msgstr "No" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "Eser Adı" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "Yazar(lar)" @@ -4001,7 +4033,7 @@ msgid "Producer" msgstr "Yapımcı" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -4044,7 +4076,7 @@ msgstr "Zaman damgası" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "Yayınlandı" @@ -4163,59 +4195,59 @@ msgstr "" "LibraryThing.com sitesinden ISBN ile tanımlanmış kitap için kapak/metadata " "al.\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "Kapak" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "Metadata ve kapakları Amazon'dan indir." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "ABD" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "Fransa" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "Almanya" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "Birleşik Krallık" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "İtalya" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "Japonya" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "İspanya" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "Kullanılacak Amazon sitesi:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "Bu ülkenin Amazon websitesi kullanılarak Metadata indirilecek." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "Amazon zaman aşımı.Sonra tekrar deneyin." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "Metadata kaynağı" @@ -4289,78 +4321,79 @@ msgstr "OZON.ru stesinden metadata/ kapak indir." msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Bu Amazon Topaz kitabı. İşlem yapılamaz." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "Hiç detay yok" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "Başlık Sayfası" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "İçindekiler" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +msgid "Title Page" +msgstr "Başlık Sayfası" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 msgid "Index" msgstr "Dizin" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 msgid "Glossary" msgstr "Açıklayıcı sözlük" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 msgid "Acknowledgements" msgstr "Takdim ve Teşekkürler" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 msgid "Bibliography" msgstr "Kaynakça" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 msgid "Colophon" msgstr "Kolofon" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 msgid "Copyright" msgstr "Telif Hakkı" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 msgid "Dedication" msgstr "İthaf" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 msgid "Epigraph" msgstr "Kitabe" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 msgid "Foreword" msgstr "Önsöz" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 msgid "List of Illustrations" msgstr "İlüstrasyon Listesi" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 msgid "List of Tables" msgstr "Tabloların Listesi" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 msgid "Notes" msgstr "Notlar" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 msgid "Preface" msgstr "Önsöz" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "Ana Metin" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "%s biçimli litaplar desteklenmiyor" @@ -4609,156 +4642,156 @@ msgstr "" msgid "Table of Contents:" msgstr "İçerik Tablosu:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "Öntanımlı olarak dosyayı ana hafıza yerine depolama kartına gönder." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "Silmeden önce onayla" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "Ana pencere geometrisi" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "Yeni sürüm çıktığında uyar" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "Seri isimlendirmeleri için Roman rakamlarını kullan" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "Etiket listelerini isme, popülerliğe ya da puanına göre sırala." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "Kapak gezinme modunda gösterilecek kapak sayısı" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "LRF'ye dönüşüm için öntanımlılar" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "LRF ekitap görüntüleyicisi için seçenekler" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "Dahili görüntüleyicisinde görünen biçimler" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "Kitap listesinde görüntülenecek sütunlar" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "Uygulama başlangıcında içerik sunucuyu otomatik olarak başlat." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "Veritabanında saklanan en eski haberler" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "Sistem tepsisi simgesini göster" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "İndirilen haberleri cihaza gönder" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "Haber kitaplarını cihaza gönderdikten sonra sil" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "Kapak akışını ana Calibre penceresi yerine ayrı bir pencerede göster" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "Sistem çekmecesindeki bildirimleri engelle" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "Mümkünse kitap kapağını otomatik olarak indir" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" "İşlemci sayısına göre aynı anda yürütülecek olan iş sayısını kısıtla." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "Arayüz animasyonlarını kapat" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "UYARI:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "HATA:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "dosyaları Seç" @@ -4864,18 +4897,18 @@ msgid "Shift+A" msgstr "Shift+A" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "Hiç kitap seçilmedi" @@ -4885,7 +4918,7 @@ msgid "Cannot add files as no books are selected" msgstr "Hiç kitap seçilmediği için dosyalar eklenemiyor" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "Emin misiniz" @@ -5028,6 +5061,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "Katalog oluşturuldu" @@ -5089,7 +5126,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "%d kitap" @@ -5148,7 +5185,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "Zaten var" @@ -5264,7 +5301,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "İzin verilmiyor" @@ -5298,23 +5335,23 @@ msgstr "" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "Dönüştürülemiyor" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "%d tane kitabın dönüştürülmesi başlıyor" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 msgid "Empty output file, probably the conversion process crashed" msgstr "Boş çıktı dosyası. Muhtemelen dönüştürme süreci başarısız oldu." #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5381,9 +5418,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5591,98 +5628,98 @@ msgstr "Koleksiyonları yönet" msgid "Manage the collections on this device" msgstr "Cihazdaki koleksiyonları yönet" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "M" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "İndirme başarısız" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "İndirme tamamlandı" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "İndirme kaydı" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "Bazı kitaplar değişti" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5690,27 +5727,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5719,7 +5756,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5732,7 +5769,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5744,15 +5781,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "Bazı hatalar" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -6136,7 +6173,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "" @@ -6228,12 +6265,12 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -6361,7 +6398,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -6404,7 +6441,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -6429,7 +6466,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "Koleksiyonlar" @@ -6447,17 +6484,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6531,7 +6568,7 @@ msgstr "çıktı" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6542,7 +6579,7 @@ msgstr "çıktı" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6958,7 +6995,7 @@ msgid "Bulk Convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "" @@ -7514,7 +7551,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" @@ -7525,33 +7562,44 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "Okuyamıyor" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "Dosyayı okuma izniniz yok: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "Dosya okumada hata" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr "" @@ -7615,7 +7663,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "&Seriler:" @@ -7791,23 +7839,33 @@ msgstr "" msgid "RB Output" msgstr "RB Çıktısı" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "Kitap Aç" @@ -7859,62 +7917,143 @@ msgstr "&Sonraki" msgid "Preview" msgstr "Önizleme" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "&Kaldır" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "&Kaydet" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "" @@ -8240,11 +8379,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8672,7 +8811,7 @@ msgid "My Books" msgstr "Kitaplarım" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "Katalog oluştur" @@ -8849,7 +8988,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "" @@ -8977,7 +9116,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8993,7 +9132,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -9034,7 +9173,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "" @@ -9067,11 +9206,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "Tarih" @@ -9086,13 +9225,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -9172,8 +9311,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "Eşleşme bulunamadı" @@ -9220,17 +9359,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "" @@ -9318,41 +9457,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "Kopyalandı" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -9365,7 +9510,7 @@ msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9546,7 +9691,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9690,13 +9835,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9865,7 +10010,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "&Kullanıcı adı:" @@ -9879,7 +10024,7 @@ msgstr "&Parola:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "&Parolayı göster" @@ -10428,62 +10573,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "Hesap" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "(seçimlik)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "(gerekli)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "İnternet bağlantısı yok" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10612,35 +10757,35 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "Gelişmiş Arama" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10648,49 +10793,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10698,45 +10843,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "&Yazar:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10744,14 +10889,14 @@ msgstr "" msgid "&Clear" msgstr "&Temizle" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -11052,90 +11197,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "Geçersiz giriş" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11530,43 +11683,43 @@ msgstr "" msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "Shift+Alt+J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11743,52 +11896,52 @@ msgstr "Boyut (MB)" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "Boyut" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11839,7 +11992,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11883,17 +12036,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "Sonraki Sayfa" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "Önceki Sayfa" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11991,7 +12144,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -12068,7 +12221,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -12192,10 +12345,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "&Kaldır" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -12224,15 +12373,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -12305,65 +12445,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -12371,33 +12511,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "Sonraki" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "Önceki" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -12405,34 +12545,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -12458,66 +12602,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12525,27 +12669,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "Lütfen bekleyin" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12553,38 +12697,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "Aranıyor..." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12610,62 +12754,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12678,11 +12822,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12702,49 +12846,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12752,11 +12872,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13616,6 +13764,7 @@ msgid "Never" msgstr "Hiçbir zaman" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "İlk harf ile" @@ -13634,7 +13783,7 @@ msgstr "Sütun renklendirme" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr " veya " @@ -14451,11 +14600,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "&Kaydet" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "Kullanıcı &kategorilerini şuradan yap:" @@ -14508,7 +14652,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "İçerik sunucusunu başlatmada hata" @@ -14529,12 +14673,12 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -14542,85 +14686,83 @@ msgstr "" "Gösterilen kapaklar için en büyük boyut(genişlikxyükseklik). daha büyük " "kapaklar yeniden boyutlandırılacaktır. " -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "En büyük kapak boyutu:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "Sunucu &portu:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "Sorgu başına en fazla &OPDS elemanı" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "Gruplanmamış en fazla &OPDS elemanı" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "Uygulanacak kısıtlama(kaydedilen arama):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "Sunucuyu &Başlat" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "Sunucuyu D&urdur" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "Sunucuyu &test et" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "Sunucu loglarını göster" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -15454,27 +15596,27 @@ msgstr "" msgid "Searches" msgstr "Aramalar" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15724,6 +15866,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15759,46 +15909,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15806,11 +15956,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15818,7 +15968,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15826,34 +15976,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15909,27 +16059,27 @@ msgstr "Şu anda %d tane eklenti güncellemesi bulunmakta" msgid "Install and configure user plugins" msgstr "Kullanıcı eklentilerini kur ve yapılandır" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "Yer imini düzenle" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "Yeni yer imi başlığı" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "Yer İmlerini Dışa Aktar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "Kayıtlı Yer İmleri (*.pickle)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "Yer İmlerini İçe Aktar" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -16049,7 +16199,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -16101,129 +16251,129 @@ msgstr "Kullanıcı Stil sayfası" msgid "No results found for:" msgstr "Şunun için bulunan yeni sonuçlar:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "Ekitap görüntüleyiciyi kişiselleştirmek için seçenekler" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "En son kullanılan pencere boyutunu hatırla" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" "Görüntüleme penceresinden daha büyük resimleri sığdırmak için yeniden " "boyutlandır" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "Çıkışta belgenin mevcut posizyonunu kaydet" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" "Sayfa çevirme animasyonu için zaman, saniye olarak. Öntanımlısı yarım " "saniyedir." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "Yazı tipi seçenekleri" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "Serif yazıtipi ailesi" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -16275,151 +16425,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "Baskı Önizleme" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "Yer imi ekle" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "Yer imlerini yönet" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16655,10 +16805,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17807,17 +17953,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "<b>%s</b> kopyalanıyor" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -18055,7 +18201,7 @@ msgstr "Tüm kitaplar" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "En yeni" @@ -18220,40 +18366,40 @@ msgstr "" "Tam arayüz size birçok özellik sunmaktadır fakat küçük boyutlu ekranlarda " "pek iyi çalışmayabilir." -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "%d kitap" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "%d öğe" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "ETİKETLER: %s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "Kütüphanenizdeki kitaplar" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -18347,7 +18493,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -18929,7 +19075,7 @@ msgstr "Brezilya Portekizcesi" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:116 msgid "English (UK)" -msgstr "İngilizce (UK)" +msgstr "İngilizce (BK)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:117 msgid "Simplified Chinese" @@ -19211,106 +19357,106 @@ msgstr "Başlıksız Yazı" msgid "Unknown News Source" msgstr "Bilinmeyen Haber Kaynağı" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "İndirme tamamlandı" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "Aşağıdaki makaleleri indirme başarısız oldu:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "Aşağıdaki makalelerin bölümlerini indirme başarısız oldu:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "Makale getirilemedi" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "Sebebi görmek için -w kodunu çalıştırın" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "Beslemeler getiriliyor..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "İndeks sayfasından beslemeleri al" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "Kapak indirilmeye çalışılıyor..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "Künye oluşturuluyor..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "[%d thread(s)] İndirilmeye başlanıyor" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "Kapak İndirilemedi: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "Kapak %s 'den indiriliyor" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "Künye resmi indirildi" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "Başlıksız Yazı" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "Makale indirildi: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "Makalenin indirilmesi başarısız oldu: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "Besleme alınıyor" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." @@ -19318,7 +19464,7 @@ msgstr "" "Giriş başarısız , calibre Süreli servisleri için kullanıcı adınız ve " "şifrenizi kontrol ediniz ." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/uk.po b/src/calibre/translations/uk.po index c3e7ba7e38..5efa9592fc 100644 --- a/src/calibre/translations/uk.po +++ b/src/calibre/translations/uk.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" -"PO-Revision-Date: 2012-03-24 12:39+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" +"PO-Revision-Date: 2012-04-27 08:22+0000\n" "Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n" "Language-Team: Ukrainian <uk@li.org>\n" "MIME-Version: 1.0\n" @@ -17,8 +17,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Launchpad-Export-Date: 2012-03-25 05:00+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:50+0000\n" +"X-Generator: Launchpad (build 15149)\n" "Language: uk\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 @@ -29,8 +29,8 @@ msgstr "Не робить абсолютно нічого" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -41,9 +41,9 @@ msgstr "Не робить абсолютно нічого" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -81,9 +81,9 @@ msgstr "Не робить абсолютно нічого" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -93,7 +93,7 @@ msgstr "Не робить абсолютно нічого" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -103,16 +103,20 @@ msgstr "Не робить абсолютно нічого" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -140,20 +144,20 @@ msgstr "Не робить абсолютно нічого" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -161,25 +165,24 @@ msgstr "Не робить абсолютно нічого" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -187,14 +190,15 @@ msgstr "Не робить абсолютно нічого" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -984,11 +988,11 @@ msgstr "Картка B" msgid "Debug log" msgstr "Журнал зневаджування" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "Зв'язується з телефонами на базі операційної системи \"Android\"" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" @@ -996,11 +1000,11 @@ msgstr "" "Перелік папок (розділений комами) для надсилання електронних книжок на " "пристрій. Будуть використані ті, що були створені першими." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "Зв'язується з телефонами на базі операційної системи \"S60\"" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "Обмін даними з планшетами під керуванням WebOS." @@ -1143,21 +1147,21 @@ msgstr "" "Натисніть кнопку \"Показати деталі\" для списку." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Новини" @@ -1165,8 +1169,8 @@ msgstr "Новини" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "Каталог" @@ -1221,20 +1225,20 @@ msgstr "Bambook" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "Отримую список книжок з пристрою…" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "Передаю книжки до пристрою…" @@ -1242,8 +1246,8 @@ msgstr "Передаю книжки до пристрою…" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "Додаю книжки до списку метаданих на пристрої…" @@ -1253,8 +1257,8 @@ msgstr "Додаю книжки до списку метаданих на при #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "Вилучаємо книжки з пристрою…" @@ -1262,13 +1266,13 @@ msgstr "Вилучаємо книжки з пристрою…" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "Влучаємо книжки з списку метаданих на пристрої…" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "Висилаю метадані до пристрою…" @@ -1549,11 +1553,11 @@ msgstr "" "сторінок. У цьому полі вам слід вказати назву нетипового стовпчика, " "наприклад #pages. " -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "Зв’язується з Kindle DX eBook reader." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "Обмін даними з Kindle Fire" @@ -1957,23 +1961,23 @@ msgstr "З’єднатися з Archos reader." msgid "Communicate with the Pico reader." msgstr "З’єднатися з Pico reader." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "Зв’язується з iPapyrus reader." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "Зв’язується з Sovos reader." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "З’єднатися з EB700 reader." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "З’єднатися з Stash W950 reader." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "З’єднатися з Wexler reader." @@ -2286,17 +2290,17 @@ msgstr "" "вимкнути за допомогою параметрів %(dis)s." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" "Внести зміни до тексту або структури документа за допомогою визначених " "користувачем взірців." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "Контроль автоматичного визначення структури документа." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " @@ -2305,15 +2309,15 @@ msgstr "" "Керування автоматичним створенням змісту. Типово, якщо файл має зміст, його " "буде використовуватися замість автоматично створеного." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "Параметри для встановлення метаданих вихідного файла" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "Параметри для полегшення зневаджування перетворення" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" @@ -2322,7 +2326,7 @@ msgstr "" "книгу на основі вбудованого рецепту ось так: ebook-convert \"Назва " "рецепту.recipe\" файл_результату.epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "Вихідні збережено до" @@ -2739,31 +2743,31 @@ msgstr "Гарнітура моноширинних шрифтів, яку сл msgid "Comic" msgstr "Комікс" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "Якщо є, використовувати сортування за полем автора, як автор." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" "Не додавати зміст до книги. Корисно, якщо книга вже має сторінку змісту." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "Заголовок для будь-якого згенерованого in-line змісту." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "Вимкнути стиснення вмісту файлів." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "Теґ маркування книжки з Personal Docs" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " @@ -2773,7 +2777,7 @@ msgstr "" "MOBI здійснить спробу перетворити поля, вказані у вхідному документі, в " "іншому випадку він їх ігноруватиме." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." @@ -2781,7 +2785,7 @@ msgstr "" "Коли до книги додається зміст, додавати його на початку книги замість кінця. " "Не рекомендується." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." @@ -2789,7 +2793,7 @@ msgstr "" "Видобути вміст файла MOBI до вказаного каталогу. Якщо каталог вже існує, " "його буде вилучено." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " @@ -2800,7 +2804,7 @@ msgstr "" "не буде автоматично синхронізуватися на всіх пристроях для читання. Скарги " "надсилайте до Amazon." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2816,7 +2820,7 @@ msgstr "" "документі багато зображень GIF/PNG, отже він стає занадто великим після " "перетворення зображень у формат JPEG." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "Всі статті" @@ -3663,9 +3667,9 @@ msgid "Set the publication date." msgstr "Вказати дату публікації." #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." +msgid "Set the book timestamp (no longer used anywhere)" msgstr "" -"Встановити часову мітку книги (використовується колонкою дати в calibre)." +"Встановити часову позначку для книги (більше ніде не використовується)" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 msgid "" @@ -3787,28 +3791,42 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "Замінник тексту, знайденого за допомогою sr3-пошуку." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" +"Шлях до файла, який містить формальні вирази для пошуку із заміною. У файлі " +"мають міститися один за одним рядки, у одному з яких має бути вказано " +"формальний вираз, а у іншому — шаблон заміни (може бути порожнім). У " +"формальному виразі має бути використано синтаксичні правила побудови " +"формальних виразів python. Слід також використовувати у файлі кодування UTF-" +"8." + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "Не можу знайти е-книжку всередині архіву" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" "Значення індексу серії і оцінка повинні бути цілими числами. Ігнорується." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "Не вдалося розібрати дату/час" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "Конвертую вхідний файл в HTML…" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "Виконую перетворення книги…" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "Створюю" @@ -4168,19 +4186,19 @@ msgstr "Ні" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "Заголовок" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "Автор(и)" @@ -4197,7 +4215,7 @@ msgid "Producer" msgstr "Виробник (продюсер)" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -4242,7 +4260,7 @@ msgstr "Мітка часу" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "Опубліковано" @@ -4378,62 +4396,62 @@ msgstr "" "Отримати зображення обкладинки/соціальні метадані книги за номером ISBN з " "LibraryThing.com\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "Обкладинка" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "Отримує метадані і обкладинки з Amazon" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "США" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "Франція" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "Німеччина" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "Великобританія" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "Італія" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "Японія" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "Іспанія" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "Вебсайт Amazon, який слід використовувати:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "" "Метадані від Amazon буде отримано з сайта Amazon, призначеного для вказаної " "країни." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" "Перевищення часу очікування на дані з Amazon. Повторіть спробу пізніше." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "Джерело метаданих" @@ -4515,78 +4533,79 @@ msgstr "Отримує метадані та обкладинки з OZON.ru" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Це книжка Amazon Topaz. Її обробка є неможливою." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "Подробиці недоступні" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "Титульна сторінка" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "Зміст" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +msgid "Title Page" +msgstr "Титульна сторінка" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 msgid "Index" msgstr "Індекс" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 msgid "Glossary" msgstr "Глосарій" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 msgid "Acknowledgements" msgstr "Підтвердження" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 msgid "Bibliography" msgstr "Бібліографія" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 msgid "Colophon" msgstr "Емблема видавництва" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 msgid "Copyright" msgstr "Авторські права" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 msgid "Dedication" msgstr "Присвята" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 msgid "Epigraph" msgstr "Епіграф" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 msgid "Foreword" msgstr "Передмова" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 msgid "List of Illustrations" msgstr "Список ілюстрацій" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 msgid "List of Tables" msgstr "Список заголовків" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 msgid "Notes" msgstr "Нотатки" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 msgid "Preface" msgstr "Вступ" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "Основний текст" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "%s формат е-книжки не підтримується" @@ -4883,90 +4902,90 @@ msgstr "" msgid "Table of Contents:" msgstr "Зміст:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "Типово надсилати файл на картку пам’яті замість основної пам’яті" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "Підтверджувати перед вилученням" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "Геометрія головного вікна" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "Повідомити про появу нової версії" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "Використовувати римські цифри для номерів серії" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "Сортувати мітки за назвами, популярністю чи оцінками" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "Відповідність будь-якій або всім міткам." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" "Кількість обкладинок, що показуватиметься в режимі перегляду за обкладинками" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "Типово перетворювати на LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "Параметри перегляду LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "Формати перегляду з використанням вбудованого оглядача" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "Стовпці будуть відображені у списку книг" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "Автоматично запускати сервер під час запуску програми" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "Старі новини зберігаються в базі даних" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "Показувати іконку в панелі завдань" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "Вивантажити на пристрій отримані нові дані" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "Вилучати нові книги з бібліотеки після вивантаження на пристрій" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "Показати обкладинку в окремому вікні замість основного вікна calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "Вимкнути сповіщення від піктограми у системному лотку" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "Типова дія у відповідь на натискання кнопки надсилання на пристрій" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." @@ -4974,7 +4993,7 @@ msgstr "" "Виконувати пошук під час введення ключових слів пошуку. Якщо цей пункт не " "буде позначено, пошук виконуватиметься лише після натискання клавіші Enter." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " @@ -4984,7 +5003,7 @@ msgstr "" "замість показу лише відповідних запиту пунктів. Для переходу до наступного " "відповідника ви можете скористатися натисканням клавіші N або F3." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." @@ -4992,23 +5011,23 @@ msgstr "" "Максимальна кількість одночасних завдань з перетворення і отримання новин. " "Це число вдвічі більше за справжнє значення з міркувань спадковості." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "Завантажити соціальні метадані (мітки/оцінки/тощо)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "Переписати автора і назву з нових метаданих" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "Автоматичне завантаження обкладинок, якщо вони наявні" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "Обмежити максимум одночасних завдань кількістю процесорів CPU" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." @@ -5017,32 +5036,32 @@ msgstr "" "щодо книги буде розташовано праворуч, за компонування «вузьке», цю панель " "буде розташовано внизу вікна." -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "Показувати середню оцінку при перегляді мітки" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "Відключити анімацію користувацького інтерфейсу" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "позначити категорії, які не слід показувати" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "УВАГА:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "ПОМИЛКА:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "Показувати це вікно підтвердження надалі" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "Виберіть файли" @@ -5153,18 +5172,18 @@ msgid "Shift+A" msgstr "Shift+A" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" -msgstr "Налаштувати додавання книг" +msgid "Control the adding of books" +msgstr "Керування додаванням книг" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "Не вибрано книги" @@ -5174,7 +5193,7 @@ msgid "Cannot add files as no books are selected" msgstr "Додавання файлів неможливе, оскільки не позначено жодної книги" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "Ви впевнені" @@ -5325,6 +5344,10 @@ msgstr "Створення каталогу неможливе через те, msgid "Generating %s catalog..." msgstr "Генерується каталог %s" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "Створення каталогу завершено з попередженнями." + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "Каталог створено." @@ -5389,7 +5412,7 @@ msgstr "Ввімкнути/створити бібліотеку…" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "%d книг(а/и)" @@ -5448,7 +5471,7 @@ msgstr "Зверніть увагу, що поточну теку бібліот #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "Вже існує" @@ -5581,7 +5604,7 @@ msgstr "Файли у вашій бібліотеці відповідають #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "Не дозволено" @@ -5617,17 +5640,17 @@ msgstr "Загальне перетворення" msgid "Create a catalog of the books in your calibre library" msgstr "Створити каталог книг у вашій бібліотеці calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "Не вдалося перетворити" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "Підготовка перетворення %d книг(и)" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 msgid "Empty output file, probably the conversion process crashed" msgstr "" "Порожній файл результату, ймовірно процес перетворення завершив роботу у " @@ -5635,7 +5658,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "%(title)s, автор — %(author)s" @@ -5709,9 +5732,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5935,71 +5958,71 @@ msgstr "Керування збірками" msgid "Manage the collections on this device" msgstr "Керування збірками на пристрої" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "Редагувати метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "Редагувати метадані індивідуально" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "Редагувати метадані разом" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "Завантажити метадані і обкладинки" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "Злити в першу обрану книгу - вилучити інші" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "Злити в першу обрану книгу - залишити інші" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "Об’єднати формати лише до першої вибраної книги — вилучити інші" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "Злити записи книг" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "M" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "Не вдалось завантажити метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "Не вдалося завантажити метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "Завантаження не вдалось" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "Не вдалося отримати метадані або обкладинки для жодної з %d книг." -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "Завантаження метаданих завершено" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " @@ -6008,7 +6031,7 @@ msgstr "" "Завершено отримання метаданих <b>%d книг</b>. Продовжити оновлення метаданих " "вашої бібліотеки?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " @@ -6017,20 +6040,20 @@ msgstr "" "Не вдалося отримати метадані і/або обкладиник %d книг. Натисніть «Показати " "подробиці», щоб переглянути список." -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "Звантаження завершено" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "Журнал звантаження" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "Деякі книги змінено" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -6043,21 +6066,21 @@ msgstr "" "переглянути список книг, у метадані яких було внесено зміни. Продовжити " "обробку?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "Неможливо редагувати метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "Неможливо злити книги" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "Для об’єднання слід позначити принаймні дві книги" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" @@ -6065,7 +6088,7 @@ msgstr "" "Зараз за вашим наказом може бути об’єднано понад 5 книг. Ви <b>справді</b> " "бажаєте виконати цю дію?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -6078,7 +6101,7 @@ msgstr "" "і наступні книги не буде вилучено і не буде змінено.<br><br>Будь ласка, " "підтвердіть виконання об’єднання." -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -6099,7 +6122,7 @@ msgstr "" "інших позначених книг буде остаточно <b>вилучено</b> з вашої бібліотеки " "calibre.<br><br> Ви <b>справді</b> бажаєте, що усі ці дії було виконано?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -6118,15 +6141,15 @@ msgstr "" "вашої бібліотеки calibre.<br><br> Ви <b>справді</b> бажаєте, що усі ці дії " "було виконано?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "Застосування змінених метаданих" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "Певні помилки" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -6530,7 +6553,7 @@ msgid "Selected books have no formats" msgstr "Позначені книги не мають форматування" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "Вибрати формат для перегляду" @@ -6632,12 +6655,12 @@ msgstr "" "calibre і додати книги меншими порціями, аж доки не виявите проблемну книгу." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "Знайдено повтори!" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -6777,7 +6800,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -6823,7 +6846,7 @@ msgid "" msgstr "" "&Декілька книг у теці. Припускаємо, що кожному файлу відповідає окрема книга" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "Автоматично додано %(num)d книг з %(src)s" @@ -6848,7 +6871,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "Книга %(sidx)s <span class=\"series_name\">%(series)s</span>" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "Збірки" @@ -6866,17 +6889,17 @@ msgstr "Копіювати обкладинку" msgid "Remove Cover" msgstr "Вилучити обкладинку" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "Двічі клацніть, щоб відкрити вікно параметрів книги" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "Шлях" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6950,7 +6973,7 @@ msgstr "вивід" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6961,7 +6984,7 @@ msgstr "вивід" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -7398,7 +7421,7 @@ msgid "Bulk Convert" msgstr "Загальне перетворення" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "Параметри, характерні для формату виведення даних." @@ -7996,7 +8019,7 @@ msgid "&Monospaced font family:" msgstr "&Моноширинна гарнітура:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "Метадані" @@ -8009,33 +8032,44 @@ msgstr "" "Встановлення метаданих. Файл з результатом обробки міститиме максимальний " "можливий об’єм метаданих." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "У цієї книги немає обкладинки" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "Розмір обкладинки: %(width)d x %(height)d пікселів" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "Вибрати обкладинку для " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "Неможливо прочитати" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "У вашого користувача недостатньо прав для читання цього файла: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "Помилка при зчитуванні файла" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "<p>Під час читання з файла сталася помилка: <br /><b>" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr " не є коректним зображенням" @@ -8104,7 +8138,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "С&ерія:" @@ -8284,26 +8318,38 @@ msgstr "Не зменшувати розміри і глибину кольор msgid "RB Output" msgstr "Вивід RB" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "Немає доступних форматів" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" "Неможливо створити формальний вираз за допомогою графічного інтерфейсу без " "книги." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "Не вдалося відкрити файл" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" "Не вдалося відкрити файл. Можливо цей файл відкрито у іншій програмі?" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" +"Не вдалося створити розмітку для перевірки. Натисніть кнопку «Показати " +"подробиці», щоб дізнатися більше." + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "Не вдалося створити дані для попереднього перегляду" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "Відкрити книгу" @@ -8355,7 +8401,7 @@ msgstr "&Далі" msgid "Preview" msgstr "Перегляд" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" @@ -8365,61 +8411,150 @@ msgstr "" "з\n" "заміною" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "&Шукати за формальним виразом" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "Текст заміни" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "Пошук за формальним виразом" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "Завантажити файл визначень пошуку із заміною Calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "Файл визначень пошуку із заміною Calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "Не вдалося прочитати" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" +"Не вдалося завантажити шаблони з %s. Натисніть кнопку «Показати подробиці», " +"щоб дізнатися більше." + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "Зберегти файл визначень пошуку із заміною Calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "Невикористане визначення пошуку із заміною" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" +"Редаговане вами визначення пошуку із заміною не було додано до списку " +"визначень. Бажаєте продовжити перетворення (визначення не буде використано)?" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "Помилка у формальному виразі" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "Некоректний формальний вираз: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" -msgstr "Перший вираз" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." +msgstr "" +"Список визначень пошуку із заміною, які буде застосовано під час цього " +"перетворення." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "Редагування визначення пошуку із заміною" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "Текст &для заміни" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" -msgstr "Другий вираз" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" +msgstr "Додати поточний вираз до списку виразів, які буде використано." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" -msgstr "Третій вираз" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" +msgstr "&Додати" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "Редагувати поточний позначений вираз" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "З&мінити" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "Вилучити поточний позначений вираз" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "&Вилучити" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "Завантажити список виразів з раніше збереженого файла" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "З&авантажити" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" +"Зберегти цей список виразів з метою полегшення подальшого використання" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "&Зберегти" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -"<p>Засіб пошуку і заміни використовує <i>формальні вирази</i>. Ознайомтеся з " -"<a href=\"http://manual.calibre-ebook.com/regexp.html\">підручником з " -"формальних виразів</a>, щоб отримати початкові відомості щодо формальних " -"виразів. Крім того, натискання наведених нижче кнопок майстра надасть вам " -"змогу перевірити дію ваших формальних виразів на поточному документі з " -"вхідними даними." +"<p>Під час пошуку із заміною використовуються <i>формальні вирази</i>. Щоб " +"зрозуміти правила використання формальних виразів, ознайомтеся із <a " +"href=\"http://manual.calibre-ebook.com/regexp.html\">підручником з " +"формальних виразів</a>. Крім того, за допомогою натискання кнопки майстра ви " +"можете перевірити результат застосування формального виразу до поточного " +"документа з вхідними даними. Коли створення виразу буде завершено, просто " +"натисніть кнопку «Додати», щоб додати його до списку виразів." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "Перетворити" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "Специфічні параметри формату вхідних даних." @@ -8763,11 +8898,11 @@ msgstr "" "якому теґу.</p><p>Докладніше про використання XPath можна дізнатися з <a " "href=\"http://manual.calibre-ebook.com/xpath.html\">настанов щодо XPath</a>." -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "Перегляд за обкладинками" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "Переглядач обкладинок не може бути завантажений" @@ -9229,7 +9364,7 @@ msgid "My Books" msgstr "Мої книги" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "Створити каталог" @@ -9507,7 +9642,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "Назва" @@ -9639,7 +9774,7 @@ msgstr "Додати «%s» до панелей або меню" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "Виберіть панелі і/або меню для додавання <b>%s</b>:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -9657,7 +9792,7 @@ msgid "Set options for converting %s" msgstr "Встановіть параметри перетворення %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -9698,7 +9833,7 @@ msgstr "Звідки слід виконати вилучення?" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "Бібліотека" @@ -9733,11 +9868,11 @@ msgstr "Розташування" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "Дата" @@ -9752,13 +9887,13 @@ msgstr "%(curr)s (було %(initial)s)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "Пункт є порожнім" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" "Пункт не можна встановити у порожнє значення. Вам слід вилучити його." @@ -9848,8 +9983,8 @@ msgstr "Посилання" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "Відповідників не знайдено" @@ -9896,17 +10031,17 @@ msgid "Copy to author" msgstr "Копіювати до поля автора" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "Некоректне ім’я автора" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "У іменах авторів не може бути символів «&»." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "Керування списком авторів" @@ -10002,41 +10137,47 @@ msgid "&Hide all jobs" msgstr "С&ховати всі завдання" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "&Копіювати до буфера" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "Показати по&дробиці" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "Схов&ати подробиці" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "Показати докладні дані щодо цієї помилки" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "Скопійована" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "Скопіювати до буфера" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "Показати журнал" @@ -10049,7 +10190,7 @@ msgid "Standard metadata" msgstr "Стандартні метадані" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "Нетипові метадані" @@ -10266,7 +10407,7 @@ msgstr "&Додати мітки: " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "Відкрити редактор міток" @@ -10433,13 +10574,13 @@ msgid "Set from &ebook file(s)" msgstr "Встановити з файлів &електронних книг" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "&Базові метадані" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "&Нетипові метадані" @@ -10630,7 +10771,7 @@ msgstr "Потрібен пароль" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "&Ім’я користувача:" @@ -10644,7 +10785,7 @@ msgstr "&Пароль:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "&Показати пароль" @@ -11260,63 +11401,63 @@ msgstr "" "Ви повинні надати ім'я користувача та пароль для використання цього джерела " "новин." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "Обліковий запис" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "(за бажанням)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "(потрібно вказати)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "Автор створення — " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "Отримати %s зараз" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "Останнє отримання даних: ніколи" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "ніколи" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "%(days)d днів, %(hours)d годин і %(mins)d хвилин тому" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "Останнє отримання даних:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" "Отримання новин неможливе, оскільки з’єднання з інтернетом непрацездатне" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "Відсутнє під'єднання до Інтернету" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "Розклад завантаження новин" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "Додати власне джерело новин" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "Отримати дані з усіх запланованих джерел новин" @@ -11462,28 +11603,28 @@ msgstr "" msgid "Negate" msgstr "Відкинути" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "Розширений пошук" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "&Тип відповідності, яким слід скористатися:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "Містить: слово або фраза будь-де у полі метаданих" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 @@ -11491,7 +11632,7 @@ msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" "Дорівнює: слово або фраза, які точно дорівнюють вмісту поля метаданих" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -11500,49 +11641,49 @@ msgid "" msgstr "" "Формальний вираз: вираз, за яким слід виконати пошук будь-де у полі метаданих" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "Знайти записи, у яких міститься…" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "&Всі ці слова" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "&Точно ця фраза:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "&Одне або декілька таких слів:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "Але не показувати записи, у яких міститься…" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "Будь-яке з цих &небажаних слів:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -11552,46 +11693,46 @@ msgstr "" "Докладнішу довідку можна знайти у <a href=\"http://manual.calibre-" "ebook.com/gui.html#the-search-interface\">Підручнику користувача</a>" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "С*кладний пошук" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "Вкажіть заголовок." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "&Автор:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "Мі&тки:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "Вкажіть ім’я автора. Можна вказати лише одного автора." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" "Вкажіть назву серії без номера. Можна використовувати лише одну назву серії." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "Вкажіть мітки, відокремлені пробілами" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -11599,14 +11740,14 @@ msgstr "Вкажіть мітки, відокремлені пробілами" msgid "&Clear" msgstr "Сп&орожнити" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "Шукати лише у певних полях:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "Наз&ва/Автор/Серія…" @@ -11924,90 +12065,98 @@ msgstr "П&еребудувати {0}" msgid "&Preview {0}" msgstr "&Переглянути {0}" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "Немає рецептів" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "Нетипових рецептів не створено." + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "Не вибрано жодного рецепта" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "Долучений файл: %(fname)s — рецепт звантаження %(title)s." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "Рецепт для " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "Перемкнутися у розширений режим" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "Перемкнутися у звичайний режим" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "Подача повинна мати заголовок" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "Подача повинна мати заголовок" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "Подача повинна мати адресу" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "Подача %s повинна мати адресу" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "Цю подачу вже було додано до рецепта" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "Некоректні дані" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "<p>Не вдалося створити рецепт. Помилка:<br>%s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "Замінити рецепт?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "Нетиповий рецепт з назвою %s вже існує. Бажаєте його замінити?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "Вибрати вбудований рецепт" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "Виберіть файл рецепта" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "Рецепти" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -12431,44 +12580,44 @@ msgstr "" msgid "Unavailable" msgstr "Недоступне" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "Завдання:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "Shift+Alt+J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "Натиснути для отримання списку завдань" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr " — завдання" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "Шукати завдання за назвою" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 msgid "No job" msgstr "Немає завдань" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "Жодного завдання не позначено" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "Ви справді бажаєте зупинити виконання позначених завдань?" msgstr[1] "Ви справді бажаєте зупинити виконання позначених завдань?" msgstr[2] "Ви справді бажаєте зупинити виконання позначених завдань?" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" "Справді бажаєте зупинити виконання всіх завдань, не пов’язаних з пристроями?" @@ -12651,25 +12800,25 @@ msgstr "Розмір (МБ)" msgid "Modified" msgstr "Змінено" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "Назва пошуку — «{0}»" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "UUID цієї книги — «{0}»" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "Доступ заборонено" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" @@ -12677,30 +12826,30 @@ msgstr "" "Не вдалося змінити розташування на диску для цієї книги. Можливо, книгу " "відкрито у іншій програмі?" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "Не вдалося записати дані" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" "Не вдалося записати дані. Натисніть кнопку «Показати подробиці», щоб " "дізнатися чому." -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "У бібліотеці" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "Розмір" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "Позначено для вилучення" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "Двічі клацніть, щоб <b>редагувати</b> мене<br><br>" @@ -12751,7 +12900,7 @@ msgstr "Звузити стовпчик, якщо він є занадто ши msgid "Restore default layout" msgstr "Відновити типове компонування" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -12797,17 +12946,17 @@ msgid "LRF Viewer toolbar" msgstr "Панель інструментів перегляду LRF" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "Наступна сторінка" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "Попередня сторінка" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -12914,7 +13063,7 @@ msgstr "" "Помилкове розташування бази даних %r. Тепер роботу calibre буде завершено." #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "Базу даних пошкоджено" @@ -13000,7 +13149,7 @@ msgstr "Непридатне до обробки виключення" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "Не вдалося відкрити %s. Чи не користується ним інша програма?" @@ -13147,10 +13296,6 @@ msgstr "В&казати" msgid "T&rim" msgstr "О&брізати" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "&Вилучити" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "Знайти &обкладинку" @@ -13179,15 +13324,6 @@ msgstr "Некоректна обкладинка" msgid "Could not change cover as the image is invalid." msgstr "Не вдалося змінити обкладинку, оскільки зображення є некоректним." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "У цієї книги немає обкладинки" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "Розмір обкладинки: %(width)d x %(height)d пікселів" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "Мітки змінено" @@ -13266,11 +13402,11 @@ msgstr "Спорожнити дату" msgid "Publishe&d:" msgstr "Оп&убліковано:" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "Запланувати отримання?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " @@ -13279,7 +13415,7 @@ msgstr "" "Отримання метаданих для <b>позначених книг (у кількості %d)</b> буде " "виконано у фоновому режимі. Виконати цю дію?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." @@ -13287,7 +13423,7 @@ msgstr "" "Стежити за поступом отримання даних можна натисканням поля лічильника у " "нижньому правому куті вікна." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." @@ -13295,69 +13431,69 @@ msgstr "" "Після завершення отримання даних calibre попросить вас підтвердити " "застосування отриманих метаданих." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "Отримати лише &метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "Отримати лише &обкладинки" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "&Налаштувати отримання" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "Отримати о&бидва типи даних" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "Отримати метадані для %d книг" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "Розпочато отримання метаданих" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "(Помилкові метадані)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "(Помилкова обкладинка)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" -msgstr "Отримано %(num)d з %(tot)d" +msgid "Processed %s" +msgstr "Оброблено %s" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:61 msgid "Downloaded metadata fields" msgstr "Отримані значення полів метаданих" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "Редагувати метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "Далі" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "Попередня" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " @@ -13368,7 +13504,7 @@ msgstr "" "Використання цієї кнопки для створення впорядкування записів заголовка " "змінить колір впорядкування заголовка з червоного на зелений." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -13381,27 +13517,27 @@ msgstr "" "Ви можете скористатися меню керування цієї кнопкою. Наведіть вказівник миші " "на цю кнопку, натисніть і утримуйте ліву кнопку миші, щоб відкрити це меню." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "Встановити впорядкування авторів за автором" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "Встановити автора за впорядкуванням авторів" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "Копіювати поле автора до впорядкування авторів" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "Копіювати впорядкування авторів до поля автора" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "Поміняти місцями автора і назву" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" @@ -13409,9 +13545,13 @@ msgstr "" "Керування записами авторів. Скористайтеся для перейменування записів або " "виправлення окремих значень впорядкування записів авторів." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" -msgstr "Вилучити порожні серії (серії, у яких немає книг)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "Вилучити дані щодо серії" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" +msgstr "Вилучити ідентифікатори" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 msgid "" @@ -13437,66 +13577,66 @@ msgstr "Змінити спосіб отримання метаданих calibr msgid " [%(num)d of %(tot)d]" msgstr " [%(num)d з %(tot)d]" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "Не вдалось прочитати обкладинку" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "Не вдалось прочитати обкладинку %s формату" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "Неправильна обкладинка в %s форматі" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "Зберегти зміни і перейти до редагування метаданих %s" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "Змінити обкладинку" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "&Коментарі" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "&Метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "&Обкладинки і формати" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "&Нетипові метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "&Коментарі" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "Базові метадані" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "Має обкладинку" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "Має резюме" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -13508,29 +13648,29 @@ msgstr "" "обкладинок, мають зображення обкладинок у сховищі\n" "отриманих обкладинок, і навпаки." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "Див. у" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "calibre отримує метадані з: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "Будь ласка, зачекайте" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "Запит: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" "Не вдалося отримати метадані. Натисніть кнопку «Показати подробиці», щоб " "переглянути подробиці." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -13542,42 +13682,42 @@ msgstr "" "лише прізвище автора та одне слово з назви, яке пам’ятаєте напевно.<p>Щоб " "переглянути журнал пошуку, натисніть кнопку «Показати подробиці»." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "Поточна обкладинка" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "Триває пошук…" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "Завантажуюся обкладинки для <b>%s</b>, будь ласка, зачекайте…" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" "Не вдалося отримати жодного зображення обкладинки. Натисніть кнопку " "«Показати подробиці», щоб переглянути подробиці." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "Не вдалося знайти жодної обкладинки для <b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" "Знайдено <b>%(num)d</b> зображень обкладинки %(title)s. Виберіть серед них " "відповідне." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "Отримання метаданих…" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "Завантаження обкладинки…" @@ -13605,16 +13745,16 @@ msgstr "Перезаписати вже створені дублікати за msgid "Create new record for each duplicate format" msgstr "Створити новий запис для кожного з дублікатів за форматами" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "Виберіть теку" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "Некоректна тека" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " @@ -13623,12 +13763,12 @@ msgstr "" "Вам слід вказати вже створену теку для автоматичного додавання до неї даних. " "Теки %s ще не існує." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "У вас немає прав на читання або запис до теки: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " @@ -13637,7 +13777,7 @@ msgstr "" "<b>УВАГА:</b> всі файли, які ви розташуєте у %s буде автоматично вилучено " "після додавання їх до calibre. Ви справді цього хочете?" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " @@ -13648,11 +13788,11 @@ msgstr "" "може або читати метадані з вмісту файла, або визначати ці метадані на основі " "назви файла." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "Читати &метадані з даних файлів, а не з назв файлів" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." @@ -13660,11 +13800,11 @@ msgstr "" "Поміняти місцями ім’я і прізвище автора. Стосується лише метаданих, " "визначених на основі назв файлів." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "По&міняти місцями ім’я та прізвище автора" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" @@ -13672,7 +13812,7 @@ msgstr "" "У разі використання пункту «&Копіювати до бібліотеки» для копіювання книг до " "бібліотеки, зберігати дату" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -13695,13 +13835,13 @@ msgstr "" "(«the», «a», «an»), пунктуацію, регістр символів тощо. Записи авторів мають " "збігатися точно." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" "&Автоматично об’єднати додані книги, якщо їхні записи вже існують у " "бібліотеці calibre:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -13737,11 +13877,11 @@ msgstr "" "(«the», «a», «an»), пунктуацію, регістр символів тощо.\n" "Записи авторів мають збігатися точно." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "&Мітки, які слід застосувати під час додавання книги:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" @@ -13749,45 +13889,15 @@ msgstr "" "Відокремлений комами список міток, які буде застосовано до книг, доданих до " "бібліотеки" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "&Налаштувати метадані на основі назви файла" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "&Процедура додавання" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" -"Вкажіть теку. Всі файли, які ви розташуєте у цій теці буде автоматично " -"додано до calibre (програму доведеться перезапустити)." - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" -"<b>Увага:</b> файли у вказаній вище теці буде вилучено після додавання їх до " -"calibre." - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" -"Ігнорувати файли з вказаними нижче суфіксами назв під час автоматичного " -"додавання " - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "Тека, з якої автоматично додаватимуться файли" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "Вказати теку" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -13799,11 +13909,46 @@ msgstr "" " Якщо файл вже є, програма покаже запит\n" " щодо того, чи слід його додати попри це." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "Шукати &дублікати під час автоматичного додавання файлів" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" +"Вкажіть теку. Всі файли, які ви розташуєте у цій теці буде автоматично " +"додано до calibre (програму доведеться перезапустити)." + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" +"<b>Увага:</b> файли у вказаній вище теці буде вилучено після додавання їх до " +"calibre." + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" +"Ігнорувати файли з вказаними нижче суфіксами назв під час автоматичного " +"додавання " + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "Тека, з якої автоматично додаватимуться файли" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "Вказати теку" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" +"Автоматично &перетворювати додані файли до поточного формату виведення даних" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "&Автоматичне додавання" @@ -14783,6 +14928,7 @@ msgid "Never" msgstr "Ніколи" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "За першою літерою" @@ -14801,7 +14947,7 @@ msgstr "Розфарбування стовпчиків" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr " або " @@ -15762,11 +15908,6 @@ msgstr "" "змінити ключ пошуку зміною значення у полі значення з наступним\n" "натисканням кнопки «Зберегти»." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "&Зберегти" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "С&творити категорії користувача з:" @@ -15835,7 +15976,7 @@ msgstr "" "«Налаштування -> Додатково -> Додатки»." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "Не вдалося запустити сервер даних" @@ -15856,21 +15997,18 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -"<p>Якщо ви не заповнюватимете поля пароля, доступ\n" -"до вашої збірки книг за допомогою мережі зможе\n" -"отримати будь-хто.\n" +"<p>Якщо ви залишите поле пароля порожнім, доступ до вашої збірки книг матиме " +"будь-хто. Достатньо буде доступу до відповідного інтерфейсу.\n" "<br>\n" -"<p>Зауважте, що паролями не можна користуватися\n" -"на пристроях під керуванням Android. \n" -"Не заповнюйте це поле, якщо ви маєте намір скористатися\n" -"сервером для обміну даними зі смартфоном або планшетом\n" -" під керуванням Android." +"<p>У програмах для перегляду деяких пристроїв для читання не передбачено " +"можливості розпізнавання за паролем. Якщо у вас виникають труднощі з " +"отриманням файлів з сервера даних,спробуйте спорожнити поле пароля." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " @@ -15878,27 +16016,27 @@ msgstr "" "Максимальні розміри (ширинаxвисота) показаних зображень обкладинок. Розмір " "більших зображень буде зменшено. " -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "Макс. розмір &обкладинки:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "&Порт сервера:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "&Макс. к-ть пунктів OPDS на запит:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "Макс. к-ть пунктів OPDS &без групи:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "Обмеження (збережений пошук), яке слід застосувати:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " @@ -15909,31 +16047,25 @@ msgstr "" "Значення цього параметра стосується окремої бібліотеки (тобто ви можете " "визначати різні обмеження для різних бібліотек)." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -"<p>Через ваду у Android встановлення пароля\n" -" заважає серверу працювати з пристроями під керуванням\n" -" Android.\n" -"<br>\n" -"<p>Не встановлюйте пароля, якщо ви маєте намір\n" -" користуватися сервером для обміну даними зі\n" -" смартфоном або планшетом під керуванням Android." +"<p>Програми для перегляду, встановлені на деяких пристроях, не передбачають " +"можливості розпізнавання користувачів. Якщо у вас виникають проблеми з " +"отриманням файлів з сервера даних, спробуйте вилучити пароль." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" -msgstr "Пароль є несумісним з пристроями під керуванням Android" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" +msgstr "Пароль несумісний з деякими типами пристроїв" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "Префікс &адреси:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " @@ -15943,19 +16075,19 @@ msgstr "" "користуватиметеся додатковим сервером всередині основного, наприклад Apache, " "зі зворотним проксі-сервером." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "&Запустити сервер" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "З&упинити сервер" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "&Перевірити сервер" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -15966,15 +16098,15 @@ msgstr "" "будь-де у цілому світі. Всі зміни набудуть чинності лише після перезапуску " "сервера." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "Запускати сервер &автоматично під час запуску calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "Переглянути ж&урнал сервера" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -16946,29 +17078,29 @@ msgstr "" msgid "Searches" msgstr "Пошуки" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "Перейменування категорії користувача" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" "Не можна використовувати крапки у назвах під час перейменування категорій " "користувача" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "Назву %s вже використано" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "Дублювати назву пошуку" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "Збережену назву пошуку %s вже використано." @@ -17231,6 +17363,14 @@ msgstr "Показати всі категорії" msgid "Change sub-categorization scheme" msgstr "Змінити схему підкатегорій" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "Вимкнути" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "Поділ" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -17269,15 +17409,15 @@ msgstr "Додавання до черги " msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "Перетворити книгу %(num)d з %(tot)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "Отримати новини з " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "Перетворити вже створену" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -17286,31 +17426,31 @@ msgstr "" "Книги з наведеного нижче списку вже було перетворено у формат %s. Хочете " "виконати повторне перетворення?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "&Підтримайте Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "&Відновити" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "Від’&єднати з’єднаний пристрій" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "Вийти з calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "Спорожнити поточний пошук" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "Діагностичний режим" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -17321,11 +17461,11 @@ msgstr "" "журналом діагностичних повідомлень можна буде ознайомитися тут: %s<p>Вміст " "файла журналу буде показано автоматично." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "Не вдалося запустити сервер даних" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -17336,7 +17476,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -17347,23 +17487,23 @@ msgstr "" "спробувала автоматично повторно зібрати базу даних у автоматичному режимі? " "Повторне збирання може бути не повністю успішним." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "Помилка перетворення" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "Рецепт вимкнено" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "<b>Помилка</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "Продовжується виконання завдань. Ви хочете вийти?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" @@ -17374,11 +17514,11 @@ msgstr "" "даних на пристрої.<br>\n" " Ви справді бажаєте завершити роботу програми?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "Активні завдання" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -17438,27 +17578,27 @@ msgstr "Доступні %d оновлень додатків" msgid "Install and configure user plugins" msgstr "Встановлення і налаштування додатків користувача" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "Редагувати закладку" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "Новий заголовок для закладки:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "Експорт закладок" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "збережені закладки (*.pickle)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "Імпортувати закладки" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "закладки Pickled (*.pickle)" @@ -17579,7 +17719,7 @@ msgid "Mouse &wheel flips pages" msgstr "Ко&ліщатко миші гортає сторінки" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -17639,17 +17779,17 @@ msgstr "&Таблиця стилів користувача" msgid "No results found for:" msgstr "Нічого не знайдено до:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "Параметри вікна перегляду електронної книги" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "Пам’ятати останні використані розміри вікон" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." @@ -17657,34 +17797,34 @@ msgstr "" "Встановити таблицю стилів користувача CSS. Такою таблицею можна скористатися " "для зміни вигляду всіх книг." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "Зменшувати масштаб зображень, більших за вікно перегляду" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "Переносити слова у тексті" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "Типова мова для правил перенесення слів" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "Зберігати поточну позицію у документі під час виходу з програми" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "Гортання сторінок у відповідь на прокручування коліщатка миші" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" "Час, у секундах, на анімацію гортання сторінки. Типовим значенням є половина " "секунди." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." @@ -17692,39 +17832,39 @@ msgstr "" "Величина, на яку буде змінено розмір шрифту у відповідь на натискання кнопок " "збільшення або зменшення. Має бути числом від 0 до 1." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "Параметри шрифту" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "Гарнітура шрифту з засічками" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "Гарнітура шрифту без засічо" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "Гарнітура моноширинного шрифту" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "Розмір стандартного шрифту у пікселях" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "Розмір моноширинного шрифту у пікселях" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "Стандартний тип шрифту" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "Продовжується редагування" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." @@ -17733,40 +17873,40 @@ msgstr "" "редагування клацанням поза межами панелі редагування клавіатурного " "скорочення." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "По&шук у словнику" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "З&найти наступний відповідник" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "Перейти…" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "Наступний розділ" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "Попередній розділ" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "Початок документа" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "Кінець документа" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "Початок розділу" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "Кінець розділу" @@ -17818,76 +17958,76 @@ msgstr "Гортати ліворуч" msgid "Scroll right" msgstr "Гортати праворуч" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "Формат книги" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "Позиція у книзі" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" "Перейти до посилання. Щоб отримати номери посилань, скористайтеся режимом " "посилань." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "Шукати текст у книзі" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "Увімкнути або вимкнути повноекранний режим (%s)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "Повноекранний режим" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "Клацніть правою кнопкою, щоб було показано елементи керування" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "Натисніть Esc, щоб вийти з режиму" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "Показати/Сховати елементи керування" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "Перегляд друку" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "Спорожнити список нещодавно відкрити книг" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" "Встановлення з’єднання з dict.org для фільтрування: <b>%s</b>…" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "Такої адреси немає" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "Адреси, на яку вказує цей пункт не існує." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "Виберіть ел. книгу" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "Ел. книги" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" @@ -17896,76 +18036,76 @@ msgstr "" "Зробити розмір шрифту %(which)s\n" "Поточне збільшення: %(mag).1f" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "більше" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "менше" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "Не знайдено збігів для: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "Завантаження послідовності…" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "Компонування %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "Закладка %d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "Додати закладку" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "Вкажіть назву закладки:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "Керування закладками" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "Завантаження книги…" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "Не вдалося відкрити ел. книгу" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "Параметри керування переглядом ел. книги" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" "Якщо вказано, буде виконано спробу перевести вікно перегляду на передній " "план під час запуску." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" "Якщо вказано, буде виконано спробу відкрити вікно перегляду на весь екран " "під час запуску." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "Вивести попередження javascript та консольні повідомлення до консолі" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." @@ -17973,7 +18113,7 @@ msgstr "" "Місце, на якому слід відкрити вказану книгу. Позначка місця визначає " "розташування у тексті верхнього лівого кута сторінки на панелі перегляду." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -18235,10 +18375,6 @@ msgstr "" "бібліотеки calibre програма копіюватиме книги до вказаного вами місця. " "Вкажіть <b>порожню теку</b>, якщо хочете створити нову бібліотеку calibre:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "З&мінити" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -19741,19 +19877,19 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)sСередня оцінка — %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" "<p>Перенесення старої бази даних до бібліотеки електронних книжок у " "%s<br><center>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "Копіювання <b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "Ущільнення бази даних" @@ -20031,7 +20167,7 @@ msgstr "Всі книги" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "Найновіші" @@ -20213,40 +20349,40 @@ msgstr "" "Повноцінний інтерфейс надає доступ до більшої кількості можливостей, але цей " "інтерфейс непридатний для малих екранів." -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "%d книга" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "%d записів" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "ОЦІНКА: %s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "МІТКИ: %s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "СЕРІЇ: %(series)s [%(sidx)s]<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "Книги у вашій бібліотеці" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "Автор — " -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "Книги, впорядковані за " @@ -20349,15 +20485,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" -"Виберіть стовпчики, у яких виконуватиметься пошук, якщо не використано " -"префіксів, наприклад під час пошуку «Червоний» замість «title:Червоний». " -"Вкажіть список ключів пошуку та фільтрування, відокремлених комами. " -"Братиметься до уваги, лише якщо позначено пункт обмеження пошуку певними " -"стовпчиками, розташований вище." +"Виберіть стовпчики, у яких відбуватиметься пошук у разі невикористання " +"префіксів, як наприклад під час пошуку «Червоний» замість title:Червоний. " +"Вкажіть список назв пунктів пошуку або фільтрів, відокремлених комами. " +"Береться до уваги, лише якщо вами позначено пункт обмеження переліку " +"стовпчиків для пошуку, розташований вище." #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:31 #: /home/kovid/work/calibre/src/calibre/utils/formatter.py:182 @@ -21488,107 +21624,107 @@ msgstr "Стаття без назви" msgid "Unknown News Source" msgstr "Невідоме джерело новин" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "Для роботи з рецептом «%s» потрібне ім’я користувача і пароль." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "Завантаження завершено" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "Не вдалося отримати такі статті:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "Не вдалося отримати частини таких статей:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr " з " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "\tПомилкові посилання:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "Не вдалося отримати статтю." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" "Дані діагностичного зворотного трасування наведено у цьому журналі вище" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "Запустіть з -vv, щоб переглянути повідомлення щодо причини" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "Отримання подач…" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "Отримано подачі зі сторінки покажчика" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "Пробую завантажити обкладинку…" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "Створення титульної сторінки…" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "Розпочато звантаження [%d потоків]…" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "Дані подач збережено до %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "Не вдалось завантажити обкладинку: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "Отримання обкладинки з %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "Отримано зображення титульної сторінки" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "Статті у цьому випуску: " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "Стаття без назви" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "Стаття завантажена: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "Не вдалось завантажити статтю: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "Отримання подачі" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." @@ -21596,7 +21732,7 @@ msgstr "" "Не вдалося увійти. Переконайтеся, що ви правильно вказали ім’я користувача і " "пароль для доступу до служби періодичних видань calibre." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/ur.po b/src/calibre/translations/ur.po index 4adb512118..2b966d7497 100644 --- a/src/calibre/translations/ur.po +++ b/src/calibre/translations/ur.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" "PO-Revision-Date: 2011-04-02 21:19+0000\n" "Last-Translator: mahmood <Unknown>\n" "Language-Team: Urdu <ur@li.org>\n" @@ -15,8 +15,8 @@ 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-03-25 05:01+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:51+0000\n" +"X-Generator: Launchpad (build 15149)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" @@ -26,8 +26,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -38,9 +38,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -78,9 +78,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -90,7 +90,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -100,16 +100,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -137,20 +141,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -158,25 +162,24 @@ msgstr "" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -184,14 +187,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -931,21 +935,21 @@ msgstr "" msgid "Debug log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "" @@ -1061,21 +1065,21 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1083,8 +1087,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "" @@ -1133,20 +1137,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "" @@ -1154,8 +1158,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "" @@ -1165,8 +1169,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "" @@ -1174,13 +1178,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "" @@ -1444,11 +1448,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "" @@ -1785,23 +1789,23 @@ msgstr "" msgid "Communicate with the Pico reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "" @@ -2064,36 +2068,36 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "" @@ -2410,56 +2414,56 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2468,7 +2472,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "" @@ -3091,7 +3095,7 @@ msgid "Set the publication date." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." +msgid "Set the book timestamp (no longer used anywhere)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 @@ -3185,27 +3189,35 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "" @@ -3520,19 +3532,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" @@ -3549,7 +3561,7 @@ msgid "Producer" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3593,7 +3605,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "" @@ -3705,59 +3717,59 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 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:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "" @@ -3825,78 +3837,79 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 -msgid "Index" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 -msgid "Glossary" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 -msgid "Acknowledgements" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 -msgid "Bibliography" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 -msgid "Colophon" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 -msgid "Copyright" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 -msgid "Dedication" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 -msgid "Epigraph" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 -msgid "Foreword" +msgid "Title Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 -msgid "List of Illustrations" +msgid "Index" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 -msgid "List of Tables" +msgid "Glossary" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 -msgid "Notes" +msgid "Acknowledgements" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 -msgid "Preface" +msgid "Bibliography" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +msgid "Colophon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 +msgid "Copyright" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 +msgid "Dedication" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 +msgid "Epigraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 +msgid "Foreword" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 +msgid "List of Illustrations" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 +msgid "List of Tables" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 +msgid "Notes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 +msgid "Preface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "" @@ -4140,155 +4153,155 @@ msgstr "" msgid "Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "" @@ -4394,18 +4407,18 @@ msgid "Shift+A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "" @@ -4415,7 +4428,7 @@ msgid "Cannot add files as no books are selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "" @@ -4558,6 +4571,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "" @@ -4619,7 +4636,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "" @@ -4678,7 +4695,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "" @@ -4794,7 +4811,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "" @@ -4828,23 +4845,23 @@ msgstr "" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -4911,9 +4928,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5121,98 +5138,98 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5220,27 +5237,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5249,7 +5266,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5262,7 +5279,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5274,15 +5291,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5666,7 +5683,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "" @@ -5758,12 +5775,12 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -5891,7 +5908,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -5934,7 +5951,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -5959,7 +5976,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "" @@ -5977,17 +5994,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6061,7 +6078,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6072,7 +6089,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6488,7 +6505,7 @@ msgid "Bulk Convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "" @@ -7044,7 +7061,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" @@ -7055,33 +7072,44 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr "" @@ -7145,7 +7173,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "" @@ -7321,23 +7349,33 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "" @@ -7389,62 +7427,143 @@ msgstr "" msgid "Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "" @@ -7770,11 +7889,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8202,7 +8321,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "" @@ -8379,7 +8498,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "" @@ -8507,7 +8626,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8523,7 +8642,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8564,7 +8683,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "" @@ -8597,11 +8716,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "" @@ -8616,13 +8735,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8702,8 +8821,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "" @@ -8750,17 +8869,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "" @@ -8848,41 +8967,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -8895,7 +9020,7 @@ msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9076,7 +9201,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9220,13 +9345,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9395,7 +9520,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" @@ -9409,7 +9534,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "" @@ -9958,62 +10083,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10142,35 +10267,35 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10178,49 +10303,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10228,45 +10353,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10274,14 +10399,14 @@ msgstr "" msgid "&Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -10582,90 +10707,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11060,43 +11193,43 @@ msgstr "" msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11273,52 +11406,52 @@ msgstr "" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11369,7 +11502,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11413,17 +11546,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11521,7 +11654,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -11598,7 +11731,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -11722,10 +11855,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -11754,15 +11883,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -11835,65 +11955,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -11901,33 +12021,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -11935,34 +12055,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -11988,66 +12112,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12055,27 +12179,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12083,38 +12207,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12140,62 +12264,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12208,11 +12332,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12232,49 +12356,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12282,11 +12382,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13145,6 +13273,7 @@ msgid "Never" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "" @@ -13163,7 +13292,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr "" @@ -13970,11 +14099,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14027,7 +14151,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "" @@ -14048,96 +14172,94 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -14971,27 +15093,27 @@ msgstr "" msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15241,6 +15363,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15276,46 +15406,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15323,11 +15453,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15335,7 +15465,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15343,34 +15473,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15426,27 +15556,27 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -15564,7 +15694,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15616,125 +15746,125 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -15786,151 +15916,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16166,10 +16296,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17318,17 +17444,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -17566,7 +17692,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "" @@ -17729,40 +17855,40 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -17856,7 +17982,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -18720,112 +18846,112 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/vi.po b/src/calibre/translations/vi.po index 00ba99f4a5..6d7f7f9e65 100644 --- a/src/calibre/translations/vi.po +++ b/src/calibre/translations/vi.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" -"PO-Revision-Date: 2012-01-16 09:10+0000\n" -"Last-Translator: kronpas <Unknown>\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" +"PO-Revision-Date: 2012-04-16 18:36+0000\n" +"Last-Translator: Lunafan <Unknown>\n" "Language-Team: Vietnamese <vi@li.org>\n" "MIME-Version: 1.0\n" "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-03-25 05:01+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:51+0000\n" +"X-Generator: Launchpad (build 15149)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" @@ -26,8 +26,8 @@ msgstr "Không làm gì cả" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -38,9 +38,9 @@ msgstr "Không làm gì cả" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -78,9 +78,9 @@ msgstr "Không làm gì cả" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -90,7 +90,7 @@ msgstr "Không làm gì cả" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -100,16 +100,20 @@ msgstr "Không làm gì cả" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -137,20 +141,20 @@ msgstr "Không làm gì cả" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -158,25 +162,24 @@ msgstr "Không làm gì cả" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -184,14 +187,15 @@ msgstr "Không làm gì cả" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -332,7 +336,7 @@ msgstr "Thiết lập thông tin mô tả từ %s tập tin" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:750 msgid "Add books to calibre or the connected device" -msgstr "Thêm sách để điều chỉnh thiết bị đang kết nối" +msgstr "Thêm sách vào chương trình chính hoặc thiết bị đang kết nối" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:755 msgid "Fetch annotations from a connected Kindle (experimental)" @@ -340,7 +344,7 @@ msgstr "Nạp chú giải từ một Kindle đang kết nối" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:760 msgid "Generate a catalog of the books in your calibre library" -msgstr "Sinh ra một danh mục sách trong thư viện của bạn" +msgstr "Tạo danh mục tất cả các sách trong thư viện" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:765 msgid "Convert books to various ebook formats" @@ -429,6 +433,8 @@ msgstr "Chép sách từ thư viện calibre này sang thư viện khác" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Make small tweaks to epub or htmlz files in your calibre library" msgstr "" +"Thực hiện vài cải tiến nhỏ với các tập tin epub hoặc htmlz trong thư viện " +"calibre" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 msgid "" @@ -452,7 +458,7 @@ msgstr "Lấy plugin mới cho calibre hoặc cập nhật plugin đã có" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:916 msgid "Look and Feel" -msgstr "Xem và cảm nhận" +msgstr "Giao diện tương tác" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:918 #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:930 @@ -568,7 +574,7 @@ msgstr "Thiết lập cách calibre chuyển các tập tin đến thiết bị #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1042 msgid "Metadata plugboards" -msgstr "" +msgstr "Quy tắc sửa thông tin miêu tả" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1048 msgid "Change metadata fields before saving/sending" @@ -656,11 +662,11 @@ msgstr "Tuỳ biến phím tắt bàn phím được calibre sử dụng" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1134 #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:110 msgid "Miscellaneous" -msgstr "Linh tinh" +msgstr "Khác" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1140 msgid "Miscellaneous advanced configuration" -msgstr "Những thiết lập khác" +msgstr "Thiết lập nâng cao khác" #: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 msgid "Conversion Input" @@ -800,6 +806,7 @@ msgstr "" msgid "" "Intended for the iPad 3 and similar devices with a resolution of 1536x2048" msgstr "" +"Dùng cho iPad 3 và thiết bị tương tự với độ phân giải màn hình 1536x2048" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:447 msgid "Intended for generic tablet devices, does no resizing of images" @@ -971,23 +978,23 @@ msgstr "Thẻ B" msgid "Debug log" msgstr "Nhật kí gỡ lỗi" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "Giao tiếp với điện thoại Android." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -"Dấu phẩy tách các danh sách thư mục để gửi e-book đến thiết bị. Thư mục đầu " -"tiên có mặt sẽ được dùng." +"Danh sách các thư mục trên thiết bị có thể gửi ebook đến, cách bằng dấu " +"phẩy. Thư mục đầu tiên có mặt sẽ được dùng" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "Giao tiếp với điện thoại S60." -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "Tương tác với máy tính bảng WebOS" @@ -1024,11 +1031,11 @@ msgstr "Bật trình điều khiển Apple" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:119 msgid "Use Series as Category in iTunes/iBooks" -msgstr "" +msgstr "Dùng Series như Thể loại trong iTunes/iBooks" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:120 msgid "Enable to use the series name as the iTunes Genre, iBooks Category" -msgstr "" +msgstr "Kích hoạt để sử dụng series như Thể loại trong iTunes, iBooks" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:122 msgid "Cache covers from iTunes/iBooks" @@ -1043,7 +1050,9 @@ msgstr "Kích hoạt để lưu và hiển thị bìa sách từ iTunes/iBooks" msgid "" "\"Copy files to iTunes Media folder %s\" is enabled in iTunes " "Preferences|Advanced" -msgstr "Chép tập tin về thư mục %s Media của iTunes" +msgstr "" +"\"Chép tập tin về thư mục Media của iTunes %s\" đã kích hoạt ở thiết lập " +"Preferences|Advanced của iTunes." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:127 msgid "" @@ -1052,6 +1061,10 @@ msgid "" "your calibre configuration directory.</p><p>Enabling indicates that iTunes " "is configured to store copies in your iTunes Media folder.</p>" msgstr "" +"<p>Cần thống nhất với thiết lập <i>Preferences</i>|<i>Advanced</i> ở " +"iTunes.</p><p>Nếu bỏ chọn, sách gửi qua iTunes sẽ lưu trong thư mục do " +"calibre đã thiết lập.</p><p>Chỉ kích hoạt nếu iTunes đã thiết lập sẵn để lưu " +"sách vào thư mục iTunes Media.</p>" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:191 msgid "Apple device" @@ -1081,6 +1094,9 @@ msgid "" "http://www.mobileread.com/forums/showthread.php?t=118559 for instructions on " "using 'Connect to iTunes'" msgstr "" +"Phương thức kết nối trực tiếp này không được hỗ trợ. Xin đọc hướng dẫn chức " +"năng 'Kết nối với iTunes' ở " +"http://www.mobileread.com/forums/showthread.php?t=118559" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:375 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:378 @@ -1095,7 +1111,7 @@ msgstr "Cập nhật danh mục thông tin mô tả của thiết bị ..." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3245 #, python-format msgid "%(num)d of %(tot)d" -msgstr "" +msgstr "%(num)d trong số %(tot)d" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:503 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:1150 @@ -1123,21 +1139,21 @@ msgstr "" "Nhấn vào \"Xem chi tiết\" để xem danh sách." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Tin tức" @@ -1145,10 +1161,10 @@ msgstr "Tin tức" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" -msgstr "" +msgstr "Danh mục" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:3095 msgid "Communicate with iTunes." @@ -1201,20 +1217,20 @@ msgstr "Bambook" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "Đang lấy danh mục sách có trên thiết bị...." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "Đang chuyển sách sang thiết bị ..." @@ -1222,8 +1238,8 @@ msgstr "Đang chuyển sách sang thiết bị ..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "Đang thêm sách vào danh mục thông tin mô tả trên thiết bị..." @@ -1233,8 +1249,8 @@ msgstr "Đang thêm sách vào danh mục thông tin mô tả trên thiết bị #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "Đang xoá sách khỏi thiết bị ..." @@ -1242,13 +1258,13 @@ msgstr "Đang xoá sách khỏi thiết bị ..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "Đang xóa sách khỏi danh mục thông tin mô tả trên thiết bị..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "Đang chuyển thông tin mô tả sang thiết bị..." @@ -1310,7 +1326,7 @@ msgstr "Giao tiếp với thiết bị đọc sách PocketBook 602/603/902/903." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:253 msgid "Communicate with the PocketBook 360+ reader." -msgstr "" +msgstr "Giao tiếp với thiết bị đọc sách PocketBook 360+." #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:263 msgid "Communicate with the PocketBook 701" @@ -1392,7 +1408,7 @@ msgstr "Giao tiếp với Elonex EB 511 eBook reader." #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:171 msgid "Communicate with the Cybook Odyssey eBook reader." -msgstr "" +msgstr "Giao tiếp với thiết bị đọc sách Cybook Odyssey." #: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16 msgid "Communicate with the IRex Iliad eBook reader." @@ -1476,7 +1492,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:289 msgid "Communicate with the Kindle 2/3/4/Touch eBook reader." -msgstr "" +msgstr "Giao tiếp với thiết bị đọc sách Kindle 2/3/4/Touch." #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:298 msgid "Send page number information when sending books" @@ -1496,7 +1512,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:305 msgid "Use slower but more accurate page number calculation" -msgstr "" +msgstr "Tính số trang bằng cơ chế chậm nhưng chính xác hơn" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:307 msgid "" @@ -1511,7 +1527,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:311 msgid "Custom column name to retrieve page counts from" -msgstr "" +msgstr "Lấy thông tin số trang từ cột do người dùng tạo" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:313 msgid "" @@ -1520,12 +1536,15 @@ msgid "" "calculating a page count. Specify the name of the custom column here, for " "example, #pages. " msgstr "" +"Nếu thư viện của bạn đã tạo thêm cột để lưu số trang sách, calibre có thể " +"xuất thông tin đó thay vì tự tính số trang. Đưa tên cột đó vào đây, ví dụ: " +"#pages. " -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "Giao tiếp với Kindle DX eBook reader." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "Giao tiếp với Kindle Fire" @@ -1572,7 +1591,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:68 msgid "Show Previews" -msgstr "" +msgstr "Xem trước" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:69 msgid "" @@ -1580,10 +1599,13 @@ msgid "" "they are no longer displayed as there is no good reason to see them. Enable " "if you wish to see/delete them." msgstr "" +"Chế độ xem trước của Kobo được sử dụng trong Touch và một số mẫu khác theo " +"mặc định. Nay không còn cho xem trước vì không còn cần thiết lắm. Nếu bạn " +"muốn xem/xóa thì kích hoạt lựa chọn này." #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:72 msgid "Show Recommendations" -msgstr "" +msgstr "Gợi ý" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:73 msgid "" @@ -1591,6 +1613,9 @@ msgid "" "but in other cases they are just pointers to the web site to buy. Enable if " "you wish to see/delete them." msgstr "" +"Kobo đưa ra các gợi ý trên thiết bị. Vài trường hợp là gợi ý tập tin, nhưng " +"còn lại chỉ là đường dẫn đến website để mua sách. Nếu bạn muốn xem/xóa gợi ý " +"thì kích hoạt lựa chọn này." #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:596 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:390 @@ -1613,6 +1638,8 @@ msgid "" "<hr /><b>Book Last Read:</b> %(time)s<br /><b>Percentage Read:</b> " "%(pr)d%%<hr />" msgstr "" +"<hr /><b>Sách đang đọc dở:</b> %(time)s<br /><b>Phần trăm đã đọc:</b> " +"%(pr)d%%<hr />" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:1055 #, python-format @@ -1621,6 +1648,9 @@ msgid "" "/><b>Chapter Progress:</b> %(chapter_progress)s%%<br />%(annotation)s<br " "/><hr />" msgstr "" +"<b>Chương %(chapter)d:</b> %(chapter_title)s<br /><b>%(typ)s</b><br " +"/><b>Tiến độ chương:</b> %(chapter_progress)s%%<br />%(annotation)s<br /><hr " +"/>" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:1064 #, python-format @@ -1629,6 +1659,9 @@ msgid "" "/><b>Chapter Progress:</b> %(chapter_progress)s%%<br /><b>Highlight:</b> " "%(text)s<br /><hr />" msgstr "" +"<b>Chương %(chapter)d:</b> %(chapter_title)s<br /><b>%(typ)s</b><br " +"/><b>Tiến độ chương:</b> %(chapter_progress)s%%<br /><b>Đánh dấu màu:</b> " +"%(text)s<br /><hr />" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:1073 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:1083 @@ -1638,6 +1671,9 @@ msgid "" "/><b>Chapter Progress:</b> %(chapter_progress)s%%<br /><b>Highlight:</b> " "%(text)s<br /><b>Notes:</b> %(annotation)s<br /><hr />" msgstr "" +"<b>Chương %(chapter)d:</b> %(chapter_title)s<br /><b>%(typ)s</b><br " +"/><b>Tiến độ chương:</b> %(chapter_progress)s%%<br /><b>Đánh dấu màu:</b> " +"%(text)s<br /><b>Ghi chú:</b> %(annotation)s<br /><hr />" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:19 msgid "Communicate with the Palm Pre" @@ -1694,11 +1730,11 @@ msgstr "Tương tác với Moovybook" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:358 msgid "Communicate with the COBY" -msgstr "Tương tác với COBY" +msgstr "Giao tiếp với COBY" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:384 msgid "Communicate with the Ex124G" -msgstr "" +msgstr "Giao tiếp với Ex142G" #: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." @@ -1718,35 +1754,36 @@ msgstr "Nook" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:21 msgid "Communicate with the Nook eBook reader." -msgstr "Giao tiếp với Nook eBook reader." +msgstr "Giao tiếp với thiết bị đọc sách Nook." #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:84 msgid "Communicate with the Nook Color, TSR and Tablet eBook readers." -msgstr "" +msgstr "Giao tiếp với các thiết bị đọc sách Nook: Color, TSR, bảng." #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." -msgstr "Giao tiếp với Nuut2 eBook reader." +msgstr "Giao tiếp với thiết bị đọc sách Nuut2." #: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:89 msgid "Communicate with the Sony PRS-500 eBook reader." -msgstr "Giao tiếp với Sony PRS-500 eBook reader." +msgstr "Giao tiếp với thiết bị đọc sách Sony PRS-500." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:22 msgid "Communicate with Sony eBook readers older than the PRST1." -msgstr "" +msgstr "Giao tiếp với các thiết bị đọc Sony đời cũ trước PRST1." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:60 msgid "Comments have been removed as the SONY reader chokes on them" msgstr "" +"Thiết bị đọc SONY không xử lý được ghi chú; các ghi chú đã bị xóa bỏ." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:66 msgid "All by title" -msgstr "Tất cả theo tựa đề" +msgstr "Liệt kê toàn bộ theo tựa đề" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:67 msgid "All by author" -msgstr "Tất cả theo tác giả" +msgstr "Liệt kê toàn bộ theo tác giả" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:70 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:68 @@ -1754,6 +1791,8 @@ msgid "" "Comma separated list of metadata fields to turn into collections on the " "device. Possibilities include: " msgstr "" +"Danh sách các trường thông tin mô tả có thể chuyển thành bộ sưu tập trên " +"thiết bị, tách bằng dấu phẩy. Ví dụ: " #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:73 #, python-format @@ -1762,10 +1801,13 @@ msgid "" "%(aba)s:%(abav)s. Add these values to the list to enable them. The " "collections will be given the name provided after the \":\" character." msgstr "" +". Còn có hai bộ sưu tập đặc biệt: %(abt)s:%(abtv)s and %(aba)s:%(abav)s. Để " +"kích hoạt, thêm các giá trị này vào danh sách. Tên các bộ sưu tập sẽ lấy " +"theo tên sau dấu \":\"." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:77 msgid "Upload separate cover thumbnails for books (newer readers)" -msgstr "" +msgstr "Tải lên ảnh bìa nhỏ không đi kèm (các đời máy mới)" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:78 msgid "" @@ -1775,11 +1817,16 @@ msgid "" "WARNING: This option should only be used with newer SONY readers: 350, 650, " "950 and newer." msgstr "" +"Thông thường thiết bị đọc SONY lấy ảnh bìa từ chính tập tin sách. Theo lựa " +"chọn này, calibre sẽ gửi riêng ảnh bìa tới thiết bị đọc, dùng khi bạn gửi " +"sách có DRM không thay đổi được ảnh bìa. CHÚ Ý: Chỉ sử dụng được với các đời " +"máy SONY mới: 350, 650, 950 và về sau." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:84 msgid "" "Refresh separate covers when using automatic management (newer readers)" msgstr "" +"Tải lại bìa không đi kèm khi dùng chế độ quản lý tự động (các đời máy mới)" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:86 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:78 @@ -1788,11 +1835,13 @@ msgid "" "your device. Unset this option if you have so many books on the reader that " "performance is unacceptable." msgstr "" +"Với lựa chọn này, mỗi lần thiết bị kết nối, ảnh bìa lại được tự động tải " +"lên. Bỏ chọn nếu trên thiết bị chứa quá nhiều sách không thể thực hiện được." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:90 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:82 msgid "Preserve cover aspect ratio when building thumbnails" -msgstr "" +msgstr "Giữ nguyên tỷ lệ bìa khi tạo ảnh nhỏ" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:92 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:84 @@ -1801,10 +1850,12 @@ msgid "" "ratio (width to height) as the cover. Unset it if you want the thumbnail to " "be the maximum size, ignoring aspect ratio." msgstr "" +"Với lựa chọn này, ảnh nhỏ của bìa sẽ giữ nguyên tỷ lệ (chiều cao x chiều " +"ngang). Bỏ chọn nếu muốn tạo cỡ ảnh lớn nhất có được, bỏ qua tỷ lệ." #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:96 msgid "Search for books in all folders" -msgstr "" +msgstr "Tìm sách trong mọi thư mục" #: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:98 msgid "" @@ -1812,6 +1863,9 @@ msgid "" "device and its cards. This permits calibre to find books put on the device " "by other software and by wireless download." msgstr "" +"Với lựa chọn này, calibre sẽ tìm sách trong mọi thư mục trên thiết bị. Như " +"vậy có thể tìm được sách trên thiết bị do phần mềm khác gửi tới hoặc tải " +"xuống qua wireless." #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:191 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:81 @@ -1820,11 +1874,11 @@ msgstr "Chưa được đặt tên" #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:36 msgid "Communicate with the PRST1 and newer SONY eBook readers" -msgstr "" +msgstr "Giao tiếp với thiết bị đọc SONY từ PRST1 về sau" #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:71 msgid "Upload separate cover thumbnails for books" -msgstr "" +msgstr "Tải lên ảnh bìa nhỏ không đi kèm" #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:72 msgid "" @@ -1832,14 +1886,17 @@ msgid "" "With this option, calibre will send a separate cover image to the reader, " "useful if you are sending DRMed books in which you cannot change the cover." msgstr "" +"Các thiết bị đọc SONY thông thường lấy ảnh bìa từ tập tin sách. Theo lựa " +"chọn này, calibre sẽ gửi ảnh bìa riêng tới thiết bị, dùng khi bạn tải các " +"sách có DRM không thay đổi được bìa." #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:76 msgid "Refresh separate covers when using automatic management" -msgstr "" +msgstr "Tải lại ảnh bìa riêng khi dùng chế độ quản lý tự động" #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:88 msgid "Use SONY Author Format (First Author Only)" -msgstr "" +msgstr "Dùng địnhh dạng tác giả của SONY (Chỉ tác giả đầu)" #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:90 msgid "" @@ -1847,6 +1904,9 @@ msgid "" "the T1 sets it. This means it will only show the first author for books with " "multiple authors. Leave this disabled if you use Metadata Plugboards." msgstr "" +"Theo lựa chọn này, tác giả hiển thị trên máy Sony giống như thiết lập trên " +"T1. Với những sách có nhiều tác giả, chỉ tác giả đầu tiên được hiển thị. Bỏ " +"chọn nếu dùng Quy tắc sửa thông tin miêu tả." #: /home/kovid/work/calibre/src/calibre/devices/sne/driver.py:17 msgid "Communicate with the Samsung SNE eBook reader." @@ -1868,23 +1928,23 @@ msgstr "Giao tiếp với thiết bị đọc sách Archos." msgid "Communicate with the Pico reader." msgstr "Giao tiếp với thiết bị đọc sách Pico." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "Giao tiếp với iPapyrus reader." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "Giao tiếp với thiết bị đọc sách Sovos" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "Giao tiếp với thiết bị đọc sách Sunstech EB700" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "Giao tiếp với thiết bị đọc sách Stash W950" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "Giao tiếp với thiết bị đọc sách Wexler" @@ -2160,15 +2220,15 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "Điều chỉnh tự động nhận dạng cấu trúc văn bản." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " @@ -2177,21 +2237,21 @@ msgstr "" "Điều chỉnh quá trình tự tạo Mục Lục. Mặc định, nếu tập tin nguồn đã có sẵn " "Mục Lục, nó sẽ được sử dụng thay vì tự động tạo Mục Lục mới." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "Tuỳ chọn để gán thông tin mô tả cho tập tin xuất" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "Tùy chọn giúp gỡ lỗi cho việc chuyển đổi" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "Dữ liệu xuất được lưu vào" @@ -2545,56 +2605,56 @@ msgstr "" msgid "Comic" msgstr "Truyện tranh" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "Vô hiệu hóa nén nội dung tập tin." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2603,7 +2663,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "" @@ -3277,8 +3337,8 @@ msgid "Set the publication date." msgstr "Gán ngày xuất bản" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." -msgstr "Gán mốc thời gian (được sử dụng cho cột ngày trong calibre)." +msgid "Set the book timestamp (no longer used anywhere)" +msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 msgid "" @@ -3371,27 +3431,35 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "Không tìm thấy sách điện tử trong tập tin nén" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "Đang chuyển đổi tập tin đầu vào sang HTML..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "Đang thay đổi sách điện tử" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "Đang tạo" @@ -3715,19 +3783,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "Tựa đề" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "Tác giả" @@ -3744,7 +3812,7 @@ msgid "Producer" msgstr "Chủ nhiệm" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3788,7 +3856,7 @@ msgstr "Mốc thời gian" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "Đã xuất bản" @@ -3907,59 +3975,59 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "Bìa sách" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "US" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "France" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "Germany" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "UK" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "Italy" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 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:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "" @@ -4027,78 +4095,79 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "Đây là sách loại Amazon Topaz. Phần mềm không thể xử lý." -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "Trang bìa" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "Mục lục" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +msgid "Title Page" +msgstr "Trang bìa" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 msgid "Index" msgstr "Chỉ mục" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 msgid "Glossary" msgstr "Từ điển thuật ngữ" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 msgid "Acknowledgements" msgstr "Lời cảm ơn" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 msgid "Bibliography" msgstr "Mục lục thư tịch" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 msgid "Colophon" msgstr "Lời ghi cuối sách" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 msgid "Copyright" msgstr "Tác quyền" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 msgid "Dedication" msgstr "Lời đề tặng" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 msgid "Epigraph" msgstr "Lời đề từ" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 msgid "Foreword" msgstr "Lời nói đầu" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 msgid "List of Illustrations" msgstr "Danh sách hình minh họa" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 msgid "List of Tables" msgstr "Danh sách Bảng biểu" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 msgid "Notes" msgstr "Chú thích" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 msgid "Preface" msgstr "Lời nói đầu" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "" @@ -4359,155 +4428,155 @@ msgstr "Không tìm thấy pdftohtml, xin kiểm tra ĐƯỜNG DẪN" msgid "Table of Contents:" msgstr "Mục lục:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "Xác nhận trước khi xóa" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "Thông báo khi có phiên bản mới" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "Sử dụng chữ số La Mã cho số thứ tự của sách trong bộ" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "Sắp xếp danh sách thẻ theo tên, mức phổ biến hoặc điểm số" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "Các định dạng được xem bằng calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "Những cột được hiển thị trong danh mục sách" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "Hiện biểu tượng trên khay hệ thống" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "Vô hiệu hoá thông báo từ biểu tượng trên khay hệ thống" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "Tải thông tin mô tả mang tính xã hội (thẻ/điểm số/v.v.)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "Ghi đè tác giả và tựa đề với thông tin mô tả mới" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "Giới hạn số tác vụ đồng thời tối đa bằng với số CPU" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "Hiển thị điểm số trung bình cho mỗi mục trong trình duyệt thẻ" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "Chọn tập tin" @@ -4619,18 +4688,18 @@ msgid "Shift+A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "" @@ -4640,7 +4709,7 @@ msgid "Cannot add files as no books are selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "" @@ -4783,6 +4852,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "Đang tạo %s danh mục..." +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "Danh mục đã được tạo." @@ -4844,7 +4917,7 @@ msgstr "Chuyển/tạo thư viện..." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "" @@ -4903,7 +4976,7 @@ msgstr "Chú ý: Thư mục chứa thư viện sẽ được đổi tên." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "Đã tồn tại" @@ -5021,7 +5094,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "Không được phép" @@ -5055,23 +5128,23 @@ msgstr "Chuyển đổi hàng loạt" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "Không thề chuyển đổi" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "Bắt đầu chuyển đổi %d cuốn sách" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5138,9 +5211,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5350,98 +5423,98 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "Thay đổi thông tin mô tả" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "Thay đổi thông tin mô tả từng cuốn sách" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "Thay đổi thông tin mô tả hàng loạt" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "Tải thông tin mô tả và bìa sách" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "M" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "không thể tải thông tin mô tả" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5449,27 +5522,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "Không thể thay đổi thông tin mô tả" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5478,7 +5551,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5491,7 +5564,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5503,15 +5576,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5911,7 +5984,7 @@ msgid "Selected books have no formats" msgstr "Sách được chọn không có định dạng" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "Chọn định dạng để xem" @@ -6013,12 +6086,12 @@ msgstr "" "gây lỗi." #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "Trùng lặp!" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -6157,7 +6230,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -6204,7 +6277,7 @@ msgstr "" "&Nhiều sách trong mỗi thư mục: giả sử tất cả các tập tin là một cuốn sách " "khác nhau" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -6229,7 +6302,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "Bộ sưu tầm" @@ -6247,17 +6320,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "Đường dẫn" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6331,7 +6404,7 @@ msgstr "tập tin xuất" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6342,7 +6415,7 @@ msgstr "tập tin xuất" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6758,7 +6831,7 @@ msgid "Bulk Convert" msgstr "Chuyển đổi hàng loạt" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "Tùy chọn cụ thể cho định dạng tập tin xuất" @@ -7317,7 +7390,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "Thông tin mô tả" @@ -7330,33 +7403,44 @@ msgstr "" "Gán thông tin mô tả. Tập tin xuất sẽ chứa những thông tin mô tả mà định dạng " "hỗ trợ." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "Không thể đọc" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "Bạn không có quyền đọc tập tin: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "Lỗi đọc tập tin" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "<p>Có lỗi khi đọc tập tin: <br /><b>" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr " không phải là hình hợp lệ" @@ -7422,7 +7506,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "&Bộ sách:" @@ -7598,23 +7682,33 @@ msgstr "" msgid "RB Output" msgstr "Xuất RB" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "Mở sách" @@ -7666,62 +7760,143 @@ msgstr "Tiế&p" msgid "Preview" msgstr "Xem trước" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "Chuyển đổi" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "Tùy chọn cụ thể cho định dạng nhập." @@ -8052,11 +8227,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8487,7 +8662,7 @@ msgid "My Books" msgstr "Sách của tôi" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "" @@ -8664,7 +8839,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "Tên" @@ -8792,7 +8967,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8809,7 +8984,7 @@ msgid "Set options for converting %s" msgstr "Thiết lập tùy chọn cho chuyển đổi %s" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8850,7 +9025,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "Thư viện" @@ -8885,11 +9060,11 @@ msgstr "Đường dẫn" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "Ngày" @@ -8904,13 +9079,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8990,8 +9165,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "" @@ -9038,17 +9213,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "Tên tác giả không hợp lệ" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "Tên tác giả không được chứa kí tự &." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "Quản lý tên tác giả" @@ -9136,41 +9311,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "Đã sao chép" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -9183,7 +9364,7 @@ msgid "Standard metadata" msgstr "Thông tin mô tả chuẩn" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9364,7 +9545,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9508,13 +9689,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9683,7 +9864,7 @@ msgstr "Cần mật khẩu" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" @@ -9697,7 +9878,7 @@ msgstr "&Mật khẩu:" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "" @@ -10246,62 +10427,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "(tùy chọn)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "(yêu cầu)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "Được tạo bởi: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10430,35 +10611,35 @@ msgstr "" msgid "Negate" msgstr "Đảo" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "Tìm kiếm nâng cao" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10466,49 +10647,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10516,45 +10697,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "Nhập tựa đề." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10562,14 +10743,14 @@ msgstr "" msgid "&Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -10870,90 +11051,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11350,43 +11539,43 @@ msgstr "" msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "Shift+Alt+J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11563,52 +11752,52 @@ msgstr "Dung lượng (MB)" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "Trong thư viện" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11659,7 +11848,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11703,17 +11892,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "Trang tiếp theo" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "Trang trước" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11811,7 +12000,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -11888,7 +12077,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -12012,10 +12201,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -12044,15 +12229,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -12125,65 +12301,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -12191,33 +12367,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -12225,34 +12401,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -12278,66 +12458,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12345,27 +12525,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "Vui lòng chờ" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12373,38 +12553,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12430,62 +12610,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12498,11 +12678,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12522,49 +12702,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12572,11 +12728,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13435,6 +13619,7 @@ msgid "Never" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "" @@ -13453,7 +13638,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr "" @@ -13863,7 +14048,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:193 msgid "That format and device already has a plugboard." -msgstr "" +msgstr "Định dạng và thiết bị này đã có quy tắc." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:205 msgid "Possibly override plugboard?" @@ -13874,6 +14059,8 @@ msgid "" "A more general plugboard already exists for that format and device. Are you " "sure you want to add the new plugboard?" msgstr "" +"Định dạng và thiết bị này đã có một quy tắc tổng quát hơn. Bạn có chắc chắn " +"muốn thêm quy tắc mới?" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:240 @@ -13885,22 +14072,28 @@ msgid "" "More specific device plugboards exist for that format. Are you sure you want " "to add the new plugboard?" msgstr "" +"Định dạng này đã có các quy tắc cụ thể hơn cho thiết bị. Bạn có chắc chắn " +"muốn thêm quy tắc mới?" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:230 msgid "Really add plugboard?" -msgstr "" +msgstr "Thêm quy tắc thật không?" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:231 msgid "" "A different plugboard matches that format and device combination. Are you " "sure you want to add the new plugboard?" msgstr "" +"Định dạng kèm với thiết bị này có một quy tắc khác. Bạn có chắc chắn muốn " +"thêm quy tắc mới?" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:241 msgid "" "More specific format and device plugboards already exist. Are you sure you " "want to add the new plugboard?" msgstr "" +"Đã có nhiều quy tắc cụ thể hơn cho định dạng và thiết bị. Bạn có chắc chắn " +"muốn thêm quy tắc mới?" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard.py:252 msgid "The {0} device does not support the {1} format." @@ -13944,15 +14137,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:123 msgid "Add new plugboard" -msgstr "" +msgstr "Thêm quy tắc mới" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:124 msgid "Edit existing plugboard" -msgstr "" +msgstr "Sửa quy tắc đã có" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:125 msgid "Existing plugboards" -msgstr "" +msgstr "Các quy tắc đã có" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:126 msgid "Source template" @@ -13964,11 +14157,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:128 msgid "Save plugboard" -msgstr "" +msgstr "Lưu quy tắc" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugboard_ui.py:129 msgid "Delete plugboard" -msgstr "" +msgstr "Xóa quy tắc" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:193 #, python-format @@ -14262,11 +14455,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14322,7 +14510,7 @@ msgstr "" "cắm giao diện thiết bị trong Tùy chỉnh-> Nâng cao-> Trình cắm" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "" @@ -14343,96 +14531,94 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -15268,27 +15454,27 @@ msgstr "" msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15538,6 +15724,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15573,46 +15767,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "&Khôi phục" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15620,11 +15814,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15632,7 +15826,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15640,34 +15834,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15723,27 +15917,27 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -15861,7 +16055,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15913,125 +16107,125 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -16083,151 +16277,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16466,10 +16660,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17618,17 +17808,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -17866,7 +18056,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "" @@ -18029,40 +18219,40 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "ĐÁNH GIÁ: %s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -18156,7 +18346,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -19020,112 +19210,112 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." @@ -19988,7 +20178,7 @@ msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:492 msgid "When using the 'Tweak Book' action, which format to prefer" -msgstr "" +msgstr "Định dạng ưu tiên cho lệnh \"Tinh chỉnh sách\"" #: /home/kovid/work/calibre/resources/default_tweaks.py:493 msgid "" @@ -19996,10 +20186,13 @@ msgid "" "automatically. By default EPUB is preferred to HTMLZ. If you would like to\n" "prefer HTMLZ to EPUB for tweaking, change this to 'htmlz'" msgstr "" +"Khi tinh chỉnh cuốn sách thuộc nhiều định dạng, calibre tự động\n" +"chọn một định dạng. Theo mặc định EPUB được ưu tiên hơn HTMLZ. Nếu muốn\n" +"ưu tiên HTMLZ thay cho EPUB, đổi giá trị này thành 'htmlz'" #: /home/kovid/work/calibre/resources/default_tweaks.py:498 msgid "Change the font size of book details in the interface" -msgstr "" +msgstr "Thay đổi cỡ chữ thông tin sách trong giao diện" #: /home/kovid/work/calibre/resources/default_tweaks.py:499 msgid "" @@ -20008,6 +20201,9 @@ msgid "" "comments are rendered in the metadata edit dialog. Set it to a positive or\n" "negative number to increase or decrease the font size." msgstr "" +"Thay đổi cỡ chữ các thông tin sách trong bảng bên và\n" +"ghi chú trong hộp thoại sửa thông tin mô tả. Nhập giá trị dương\n" +"hoặc âm để phóng to hay thu nhỏ cỡ chữ." #: /home/kovid/work/calibre/resources/default_tweaks.py:504 msgid "Compile General Program Mode templates to Python" diff --git a/src/calibre/translations/wa.po b/src/calibre/translations/wa.po index a8606faea3..b606d21648 100644 --- a/src/calibre/translations/wa.po +++ b/src/calibre/translations/wa.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" "PO-Revision-Date: 2011-07-05 23:12+0000\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: Walloon <wa@li.org>\n" @@ -15,8 +15,8 @@ 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-03-25 05:01+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:51+0000\n" +"X-Generator: Launchpad (build 15149)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" @@ -26,8 +26,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -38,9 +38,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -78,9 +78,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -90,7 +90,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -100,16 +100,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -137,20 +141,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -158,25 +162,24 @@ msgstr "" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -184,14 +187,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -931,21 +935,21 @@ msgstr "" msgid "Debug log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "" @@ -1061,21 +1065,21 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1083,8 +1087,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "" @@ -1133,20 +1137,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "" @@ -1154,8 +1158,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "" @@ -1165,8 +1169,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "" @@ -1174,13 +1178,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "" @@ -1444,11 +1448,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "" @@ -1785,23 +1789,23 @@ msgstr "" msgid "Communicate with the Pico reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "" @@ -2064,36 +2068,36 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "" @@ -2410,56 +2414,56 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2468,7 +2472,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "" @@ -3091,7 +3095,7 @@ msgid "Set the publication date." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." +msgid "Set the book timestamp (no longer used anywhere)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 @@ -3185,27 +3189,35 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "" @@ -3520,19 +3532,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" @@ -3549,7 +3561,7 @@ msgid "Producer" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3593,7 +3605,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "" @@ -3705,59 +3717,59 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 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:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "" @@ -3825,78 +3837,79 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 -msgid "Index" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 -msgid "Glossary" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 -msgid "Acknowledgements" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 -msgid "Bibliography" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 -msgid "Colophon" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 -msgid "Copyright" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 -msgid "Dedication" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 -msgid "Epigraph" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 -msgid "Foreword" +msgid "Title Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 -msgid "List of Illustrations" +msgid "Index" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 -msgid "List of Tables" +msgid "Glossary" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 -msgid "Notes" +msgid "Acknowledgements" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 -msgid "Preface" +msgid "Bibliography" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +msgid "Colophon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 +msgid "Copyright" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 +msgid "Dedication" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 +msgid "Epigraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 +msgid "Foreword" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 +msgid "List of Illustrations" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 +msgid "List of Tables" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 +msgid "Notes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 +msgid "Preface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "" @@ -4140,155 +4153,155 @@ msgstr "" msgid "Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "" @@ -4394,18 +4407,18 @@ msgid "Shift+A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "" @@ -4415,7 +4428,7 @@ msgid "Cannot add files as no books are selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "" @@ -4558,6 +4571,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "" @@ -4619,7 +4636,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "" @@ -4678,7 +4695,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "" @@ -4794,7 +4811,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "" @@ -4828,23 +4845,23 @@ msgstr "" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -4911,9 +4928,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5121,98 +5138,98 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5220,27 +5237,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5249,7 +5266,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5262,7 +5279,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5274,15 +5291,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5666,7 +5683,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "" @@ -5758,12 +5775,12 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -5891,7 +5908,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -5934,7 +5951,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -5959,7 +5976,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "" @@ -5977,17 +5994,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6061,7 +6078,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6072,7 +6089,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6488,7 +6505,7 @@ msgid "Bulk Convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "" @@ -7044,7 +7061,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" @@ -7055,33 +7072,44 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr "" @@ -7145,7 +7173,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "" @@ -7321,23 +7349,33 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "" @@ -7389,62 +7427,143 @@ msgstr "" msgid "Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "" @@ -7770,11 +7889,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8202,7 +8321,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "" @@ -8379,7 +8498,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "" @@ -8507,7 +8626,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8523,7 +8642,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8564,7 +8683,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "" @@ -8597,11 +8716,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "" @@ -8616,13 +8735,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8702,8 +8821,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "" @@ -8750,17 +8869,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "" @@ -8848,41 +8967,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -8895,7 +9020,7 @@ msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9076,7 +9201,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9220,13 +9345,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9395,7 +9520,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" @@ -9409,7 +9534,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "" @@ -9958,62 +10083,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10142,35 +10267,35 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10178,49 +10303,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10228,45 +10353,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10274,14 +10399,14 @@ msgstr "" msgid "&Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -10582,90 +10707,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11060,43 +11193,43 @@ msgstr "" msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11273,52 +11406,52 @@ msgstr "" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11369,7 +11502,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11413,17 +11546,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11521,7 +11654,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -11598,7 +11731,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -11722,10 +11855,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -11754,15 +11883,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -11835,65 +11955,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -11901,33 +12021,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -11935,34 +12055,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -11988,66 +12112,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12055,27 +12179,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12083,38 +12207,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12140,62 +12264,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12208,11 +12332,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12232,49 +12356,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12282,11 +12382,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13145,6 +13273,7 @@ msgid "Never" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "" @@ -13163,7 +13292,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr "" @@ -13970,11 +14099,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14027,7 +14151,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "" @@ -14048,96 +14172,94 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -14971,27 +15093,27 @@ msgstr "" msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15241,6 +15363,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15276,46 +15406,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15323,11 +15453,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15335,7 +15465,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15343,34 +15473,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15426,27 +15556,27 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -15564,7 +15694,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15616,125 +15746,125 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -15786,151 +15916,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16166,10 +16296,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17318,17 +17444,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -17566,7 +17692,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "" @@ -17729,40 +17855,40 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -17856,7 +17982,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -18720,112 +18846,112 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/yi.po b/src/calibre/translations/yi.po index 7c5ed12ada..7f7d669e5b 100644 --- a/src/calibre/translations/yi.po +++ b/src/calibre/translations/yi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" "PO-Revision-Date: 2009-09-04 22:02+0000\n" "Last-Translator: Kovid Goyal <Unknown>\n" "Language-Team: Yiddish <yi@li.org>\n" @@ -15,8 +15,8 @@ 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-03-25 05:02+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:51+0000\n" +"X-Generator: Launchpad (build 15149)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" @@ -26,8 +26,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -38,9 +38,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -78,9 +78,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -90,7 +90,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -100,16 +100,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -137,20 +141,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -158,25 +162,24 @@ msgstr "" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -184,14 +187,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -931,21 +935,21 @@ msgstr "" msgid "Debug log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "" @@ -1061,21 +1065,21 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1083,8 +1087,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "" @@ -1133,20 +1137,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "" @@ -1154,8 +1158,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "" @@ -1165,8 +1169,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "" @@ -1174,13 +1178,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "" @@ -1444,11 +1448,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "" @@ -1785,23 +1789,23 @@ msgstr "" msgid "Communicate with the Pico reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "" @@ -2064,36 +2068,36 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "" @@ -2410,56 +2414,56 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2468,7 +2472,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "" @@ -3091,7 +3095,7 @@ msgid "Set the publication date." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." +msgid "Set the book timestamp (no longer used anywhere)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 @@ -3185,27 +3189,35 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "" @@ -3520,19 +3532,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" @@ -3549,7 +3561,7 @@ msgid "Producer" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3593,7 +3605,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "" @@ -3705,59 +3717,59 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 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:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "" @@ -3825,78 +3837,79 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 -msgid "Index" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 -msgid "Glossary" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 -msgid "Acknowledgements" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 -msgid "Bibliography" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 -msgid "Colophon" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 -msgid "Copyright" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 -msgid "Dedication" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 -msgid "Epigraph" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 -msgid "Foreword" +msgid "Title Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 -msgid "List of Illustrations" +msgid "Index" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 -msgid "List of Tables" +msgid "Glossary" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 -msgid "Notes" +msgid "Acknowledgements" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 -msgid "Preface" +msgid "Bibliography" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +msgid "Colophon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 +msgid "Copyright" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 +msgid "Dedication" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 +msgid "Epigraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 +msgid "Foreword" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 +msgid "List of Illustrations" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 +msgid "List of Tables" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 +msgid "Notes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 +msgid "Preface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "" @@ -4140,155 +4153,155 @@ msgstr "" msgid "Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "" @@ -4394,18 +4407,18 @@ msgid "Shift+A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "" @@ -4415,7 +4428,7 @@ msgid "Cannot add files as no books are selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "" @@ -4558,6 +4571,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "" @@ -4619,7 +4636,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "" @@ -4678,7 +4695,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "" @@ -4794,7 +4811,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "" @@ -4828,23 +4845,23 @@ msgstr "" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -4911,9 +4928,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5121,98 +5138,98 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5220,27 +5237,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5249,7 +5266,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5262,7 +5279,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5274,15 +5291,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5666,7 +5683,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "" @@ -5758,12 +5775,12 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -5891,7 +5908,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -5934,7 +5951,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -5959,7 +5976,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "" @@ -5977,17 +5994,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6061,7 +6078,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6072,7 +6089,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6488,7 +6505,7 @@ msgid "Bulk Convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "" @@ -7044,7 +7061,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" @@ -7055,33 +7072,44 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr "" @@ -7145,7 +7173,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "" @@ -7321,23 +7349,33 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "" @@ -7389,62 +7427,143 @@ msgstr "" msgid "Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "" @@ -7770,11 +7889,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8202,7 +8321,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "" @@ -8379,7 +8498,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "" @@ -8507,7 +8626,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8523,7 +8642,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8564,7 +8683,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "" @@ -8597,11 +8716,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "" @@ -8616,13 +8735,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8702,8 +8821,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "" @@ -8750,17 +8869,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "" @@ -8848,41 +8967,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -8895,7 +9020,7 @@ msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9076,7 +9201,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9220,13 +9345,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9395,7 +9520,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" @@ -9409,7 +9534,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "" @@ -9958,62 +10083,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10142,35 +10267,35 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10178,49 +10303,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10228,45 +10353,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10274,14 +10399,14 @@ msgstr "" msgid "&Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -10582,90 +10707,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11060,43 +11193,43 @@ msgstr "" msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11273,52 +11406,52 @@ msgstr "" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11369,7 +11502,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11413,17 +11546,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11521,7 +11654,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -11598,7 +11731,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -11722,10 +11855,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -11754,15 +11883,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -11835,65 +11955,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -11901,33 +12021,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -11935,34 +12055,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -11988,66 +12112,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12055,27 +12179,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12083,38 +12207,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12140,62 +12264,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12208,11 +12332,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12232,49 +12356,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12282,11 +12382,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13145,6 +13273,7 @@ msgid "Never" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "" @@ -13163,7 +13292,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr "" @@ -13970,11 +14099,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14027,7 +14151,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "" @@ -14048,96 +14172,94 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -14971,27 +15093,27 @@ msgstr "" msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15241,6 +15363,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15276,46 +15406,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15323,11 +15453,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15335,7 +15465,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15343,34 +15473,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15426,27 +15556,27 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -15564,7 +15694,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15616,125 +15746,125 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -15786,151 +15916,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16166,10 +16296,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17318,17 +17444,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -17566,7 +17692,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "" @@ -17729,40 +17855,40 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -17856,7 +17982,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -18720,112 +18846,112 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/zh_CN.po b/src/calibre/translations/zh_CN.po index bdc9175b4c..a283ff75b1 100644 --- a/src/calibre/translations/zh_CN.po +++ b/src/calibre/translations/zh_CN.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" "PO-Revision-Date: 2012-03-28 06:32+0000\n" "Last-Translator: Yifan Zhou <yifancoding@gmail.com>\n" "Language-Team: Simplified Chinese <wanglihao@gmail.com>\n" @@ -17,8 +17,8 @@ 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-03-29 04:34+0000\n" -"X-Generator: Launchpad (build 15032)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:53+0000\n" +"X-Generator: Launchpad (build 15149)\n" "X-Poedit-Country: CHINA\n" "X-Poedit-Language: Chinese\n" @@ -30,8 +30,8 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -42,9 +42,9 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -82,9 +82,9 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -94,7 +94,7 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -104,16 +104,20 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -141,20 +145,20 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -162,25 +166,24 @@ msgstr "不做任何处理" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -188,14 +191,15 @@ msgstr "不做任何处理" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -941,21 +945,21 @@ msgstr "存储卡B" msgid "Debug log" msgstr "调试日志" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "与 Android 手机通信。" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "逗号间隔的电子书发送到设备目录的列表。将使用第一个存在的目录。" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "与 S60 手机通信。" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "与 WebOS 平板通信。" @@ -1086,21 +1090,21 @@ msgstr "" "点击“查看详情”查看列表。" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "新闻" @@ -1108,8 +1112,8 @@ msgstr "新闻" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "分类" @@ -1160,20 +1164,20 @@ msgstr "锦书" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "从设备中获取书籍列表..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "传输书籍到设备中..." @@ -1181,8 +1185,8 @@ msgstr "传输书籍到设备中..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "将书籍添加到设备的元数据列表中..." @@ -1192,8 +1196,8 @@ msgstr "将书籍添加到设备的元数据列表中..." #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "正在从设备中删除书籍..." @@ -1201,13 +1205,13 @@ msgstr "正在从设备中删除书籍..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "将书籍从设备的元数据列表移除中..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "正在传输元数据到设备..." @@ -1475,11 +1479,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "与 Kindle DX 电子书阅读器通信。" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "与 Kindle Fire 通信。" @@ -1827,23 +1831,23 @@ msgstr "和 Archos 读者交流" msgid "Communicate with the Pico reader." msgstr "与 Pico 阅读器通信。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "与 iPapyrus 阅读器通信。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "与 Sovos 阅读器通信。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "与 Sunstech EB700 阅读器通信。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "和 Stash W950 读者交流" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "与Wexler阅读器通讯" @@ -2126,30 +2130,30 @@ msgid "" msgstr "使用常见模式修改文档内容与结构。默认禁用。使用 %(en)s 启用该功能。具体选项可以通过 %(dis)s 参数禁用。" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "以用户预定义的模式修改文档内容和结构。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "控制自动检测文档结构。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." msgstr "控制自动生成目录。默认,若源文件有目录,它将被首选项使用自动生成一份。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "设定输出中元数据的选项" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "用于调试转换的选项" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" @@ -2157,7 +2161,7 @@ msgstr "" "列出内建的订阅清单名。你可以通过如下命令创建基于内建订阅清单的电子书: ebook-convert \"Recipe Name.recipe\" " "output.epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "输出保存到" @@ -2495,56 +2499,56 @@ msgstr "将被内嵌的等宽字体集" msgid "Comic" msgstr "漫画" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "如果“排序作者”字段值非空,在按作者排序时使用该字段的值排序。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "不要为书籍添加目录。如果书籍内容中本身就包括目录,则应启用本选项。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "生成的行内目录标题。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "不压缩文件内容。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "标记标签的书籍将被归档为个人文档" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "忽略输入文档中的页边距。如果未选中,MOBI 输出插件会尝试转换输入文档中的页边距设置,否则就会忽略它们。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "当为书籍添加目录时,添加在书的最前面而不是最后面。不建议启用本选项。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "把 MOBI 文件的内容提取到指定目录。如果指定目录已存在,它会被清除。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2553,7 +2557,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "所有文章" @@ -3224,8 +3228,8 @@ msgid "Set the publication date." msgstr "设定出版日期。" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." -msgstr "设定书籍时间戳(calibre 中日期列使用)" +msgid "Set the book timestamp (no longer used anywhere)" +msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 msgid "" @@ -3322,27 +3326,35 @@ msgstr "第三项要被替换的搜索模式(正则表达式)<" msgid "Replacement to replace the text found with sr3-search." msgstr "第三项搜索的替换文本。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "无法在压缩文件中找到电子书籍" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "序列索引和评分必须为数字。忽略" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "解析日期/时间失败" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "将输入转换为HTML中..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "正在对电子书籍进行转换..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "正在创建" @@ -3678,19 +3690,19 @@ msgstr "否" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "标题" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "作者" @@ -3707,7 +3719,7 @@ msgid "Producer" msgstr "出品人" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3750,7 +3762,7 @@ msgstr "时间戳" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "出版日期" @@ -3875,59 +3887,59 @@ msgstr "" "\n" "从LibraryThing.com为书籍标识符ISBN采集封面图像/社会元数据\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "封面" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "从 Amazon 下载元数据和封面" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "美国" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "法国" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "德国" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "英国" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "意大利" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "日本" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "西班牙" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "选择要使用的 Amazon 网站:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "使用所选择国家的 Amazon 网站上数据做为元数据。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "Amazon 网站访问超时,请稍候再试。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "元数据来源" @@ -3999,78 +4011,79 @@ msgstr "从 OZON.ru 下载元数据和封面" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "这是一部 Amazon Topaz 书籍。无法处理。" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "无详细信息" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "标题页" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "目录" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +msgid "Title Page" +msgstr "标题页" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 msgid "Index" msgstr "索引" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 msgid "Glossary" msgstr "词汇表" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 msgid "Acknowledgements" msgstr "致谢" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 msgid "Bibliography" msgstr "参考文献" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 msgid "Colophon" msgstr "末页" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 msgid "Copyright" msgstr "版权" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 msgid "Dedication" msgstr "献辞" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 msgid "Epigraph" msgstr "题辞" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 msgid "Foreword" msgstr "前言" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 msgid "List of Illustrations" msgstr "插图列表" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 msgid "List of Tables" msgstr "表格列表" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 msgid "Notes" msgstr "注释" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 msgid "Preface" msgstr "序言" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "正文" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "不支持 %s 格式电子书" @@ -4358,155 +4371,155 @@ msgstr "无法找到 pdftohtml,请确认其已被加入系统路径变量 PATH msgid "Table of Contents:" msgstr "目录:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "默认将文件传输到存储卡而非设备内置存储" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "删除前确认" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "主窗口位置尺寸" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "新版程序可用时提示" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "使用罗马数字作为序列数字" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "以名称,流行度,或星级来为标签排序。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "匹配任意或全部标签" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "在浏览模式下显示的书籍封面数量" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "转换到LRF文件的默认选项" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "查看LRF文件的选项" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "使用内置浏览器查看的文件格式" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "显示书籍列表时显示的信息列" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "在程序启动时启动内容服务程序" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "在数据库中保留旧消息" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "显示系统托盘图标" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "将下载的新闻传输到设备上" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "将封面显示在单独的窗口而不是在 calibre 主窗口" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "禁用系统托盘消息" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "当“传送到设备”按钮被按下时的默认操作" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "输入搜索关键字的同时就进行搜索。如果禁用这个功能,只有在按下回车键后才会开始搜索。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "搜索时在全部书籍列表中以高亮显示标明搜索结果而不是过滤掉不匹配的书籍项。可以按 N 键或 F3 键跳转到下一个匹配项。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "允许同时进行的格式转换或新闻下载任务的个数。由于软件的某些历史原因,这个值应该设置为实际需要值的两倍。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "下载社会性元数据(标签、评分等)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "使用新元数据覆盖作者和书名信息" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "自动下载可用封面" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "将并发任务最大值限制为 CPU 数量" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "软件界面布局。“宽”布局在右侧显示书籍详细信息,“窄”布局在下侧显示书籍详细信息。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "在标签浏览器中显示每个项目说明的平均星级" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "禁用界面动画" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "标签浏览器分类无法显示" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "再次显示该确认" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "选择文件" @@ -4612,18 +4625,18 @@ msgid "Shift+A" msgstr "Shift+A" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "未选择书籍" @@ -4633,7 +4646,7 @@ msgid "Cannot add files as no books are selected" msgstr "没有选中书籍,无法添加文件" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "您确定吗" @@ -4776,6 +4789,10 @@ msgstr "没有选择书籍来创建分类" msgid "Generating %s catalog..." msgstr "正在生成 %s 分类..." +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "已经生成分类。" @@ -4837,7 +4854,7 @@ msgstr "切换/创建书库..." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "%d 本书" @@ -4896,7 +4913,7 @@ msgstr "请注意,实际的书库文件夹将被重命名。" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "已存在" @@ -5014,7 +5031,7 @@ msgstr "你的书库中的文件和数据库信息相符合。" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "不允许" @@ -5048,23 +5065,23 @@ msgstr "批量转换" msgid "Create a catalog of the books in your calibre library" msgstr "为你的 calibre 书库创建分类目录" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "无法转换" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "开始转换 %d 本书" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5131,9 +5148,9 @@ msgstr "使用环境变量 CALIBRE_OVERRIDE_DATABASE_PATH 时不可是用其它 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5343,98 +5360,98 @@ msgstr "管理合集" msgid "Manage the collections on this device" msgstr "管理设备上的合集" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "编辑元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "逐个修改元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "批量修改元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "下载元数据和封面" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "合并到第一本选定书籍 - 删除其它" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "合并到第一本选定书籍 - 保留其它" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "仅合并各种格式的书籍文件到第一本选定书籍 - 删除其它" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "合并书籍记录" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "M" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "无法下载元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "下载元数据失败" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "下载失败" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "无法为 %d 本书籍下载元数据或封面。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "元数据下载完成" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "<b>%d 本书籍</b> 的元数据下载完成。要更新书库中的元数据吗?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "无法下载 %d 本书的元数据和/或封面。单击“显示细节”查看是出错的书籍。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "下载完成" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "下载日志" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "部分书籍发生变化" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5443,27 +5460,27 @@ msgid "" msgstr "" "您开始下载元数据后,书库中部分书籍的元数据发生了变化。如果继续,部分元数据的改动可能会丢失。点击“查看详情”查看受影响的书籍列表。要继续吗?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "无法编辑元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "无法合并书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "合并需要选定至少两本书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "您将要合并多余 5 本书。<b>是否</b>确定?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5474,7 +5491,7 @@ msgstr "" "选中书籍的各种格式文件和元数据将被合并到 <b>第一本被选中的书籍</b> (%s)。ISBN 号 <b>不会</b> " "被合并。<br><br>第二本及以后的被选中书籍不会被改变。<br><br>请确认是否要继续操作。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5491,7 +5508,7 @@ msgstr "" "<b>删除</b>。<br><br>第一本选中的书籍的所有格式将会保留,第二本及以后的被选中的书籍中的重复的书籍格式会被从 calibre 书库永久 " "<b>删除</b>。<br><br>请 <b>确认</b> 是否要继续操作。<" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5507,15 +5524,15 @@ msgstr "" "<b>删除</b>。<br><br>第一本选中的书籍的所有格式将会保留,第二本及以后的被选中的书籍中的重复的书籍格式会被从 calibre 书库永久 " "<b>删除</b>。<br><br>请 <b>确认</b> 是否要继续操作。<" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "正在应用修改过的元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "一些失败" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5906,7 +5923,7 @@ msgid "Selected books have no formats" msgstr "选中的书籍没有格式" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "选择格式进行查看" @@ -5998,12 +6015,12 @@ msgid "" msgstr "添加书籍进程似乎已死。请尝试重启 calibre 并分步添加书籍,直到定位出问题的书籍。" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "发现重复" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -6135,7 +6152,7 @@ msgstr "在当前文件夹及其子文件夹中搜索的书籍并添加到 calib #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -6178,7 +6195,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "每个文件夹中放多本书籍,假定个电子书文件是不同的书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -6203,7 +6220,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "<span class=\"series_name\">%(series)s</span> 系列中的第 %(sidx)s 本书" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "合集" @@ -6221,17 +6238,17 @@ msgstr "复制封面" msgid "Remove Cover" msgstr "删除封面" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "双击打开书籍细节窗口" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "路径" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6305,7 +6322,7 @@ msgstr "输出" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6316,7 +6333,7 @@ msgstr "输出" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6738,7 +6755,7 @@ msgid "Bulk Convert" msgstr "批量转换" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "设置输出格式选项" @@ -7305,7 +7322,7 @@ msgid "&Monospaced font family:" msgstr "等宽字体(&M):" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "元数据" @@ -7316,33 +7333,44 @@ msgid "" "possible." msgstr "设置元数据。输出文件将尽可能多的携带元数据信息。" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "本书没有设置封面" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "封面大小: %(width)d x %(height)d 点" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "选择该书籍的封面 " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "无法读取" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "你没有读取该文件的权限 " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "读取文件出错" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "<p>读取此文件时发生错误:<br/><b>" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr " 不是合法的图片" @@ -7406,7 +7434,7 @@ msgstr "电子书籍的分类标签. 此标签对于数字搜索非常有用. <b #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "系列(&S):" @@ -7582,23 +7610,33 @@ msgstr "不缩小图像大小和深度" msgid "RB Output" msgstr "RB 输出" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "无格式何用" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "缺少书籍,无法使用图形界面构建器构建正则表达式。" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "无法打开文件" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "无法打开文件,请确认该文件是否处于被别的应用程序打开的状态。" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "打开书籍" @@ -7650,65 +7688,143 @@ msgstr "下一个(&N)" msgid "Preview" msgstr "预览" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "查找与替换" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "查找正则表达式(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "无效正则表达式" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "无效正则表达式:%s" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" -msgstr "第一个表达式" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "替换文本(&R)" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" -msgstr "第二个表达式" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" -msgstr "第三个表达式" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "变更(&C)" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "移除(&R)" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "保存(&S)" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -"<p>查找与替换使用 <i>正则表达式</i> 。请参阅 <a href=\"http://manual.calibre-" -"ebook.com/regexp.html\">正则表达式教程</a> " -"学习正则表达式的使用方法。可以点击下面的向导按钮用于测试你所编写的正则表达式作用在当前输入文本上的效果。" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "转换" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "仅针对特定输入格式的选项。" @@ -8047,11 +8163,11 @@ msgstr "" "的标签名”设为*匹配的所有的 HTML 标签。</p><p>请访问 <a href=\"http://manual.calibre-" "ebook.com/xpath.html\">XPath Tutorial</a> 了解XPath的更多高级用法。" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "用封面浏览" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "封面浏览器无法加载" @@ -8486,7 +8602,7 @@ msgid "My Books" msgstr "我的书籍" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "生成分类" @@ -8711,7 +8827,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "名称" @@ -8841,7 +8957,7 @@ msgstr "把 \"%s\" 加到工具栏或菜单中" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "选择要把 <b>%s</b> 添加到的工具栏和/或菜单:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8857,7 +8973,7 @@ msgid "Set options for converting %s" msgstr "设置转换 %s 的选项" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8898,7 +9014,7 @@ msgstr "删除何处的书籍?" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "书库" @@ -8931,11 +9047,11 @@ msgstr "位置" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "日期" @@ -8950,13 +9066,13 @@ msgstr "%(curr)s (原始为: %(initial)s)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "项目为空" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "项目不能设置为什么也没有。请删除之。" @@ -9040,8 +9156,8 @@ msgstr "链接" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "无匹配项" @@ -9088,17 +9204,17 @@ msgid "Copy to author" msgstr "复制到“作者”" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "无效的作者名" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "作者名中不能包含&符号" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "管理作者" @@ -9186,41 +9302,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "复制到剪贴板(&C)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "查看详情(&D)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "隐藏详情(&D)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "显示有关当前错误的详细信息" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "已复制" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "复制到剪贴板" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "查看日志" @@ -9233,7 +9355,7 @@ msgid "Standard metadata" msgstr "标准元数据" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "自定义元数据" @@ -9423,7 +9545,7 @@ msgstr "添加标签(&G): " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "打开标签编辑器" @@ -9574,13 +9696,13 @@ msgid "Set from &ebook file(s)" msgstr "从书籍文件中读取封面(&E)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "基本元数据(&B)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "自定义元数据(&C)" @@ -9754,7 +9876,7 @@ msgstr "需要密码" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "用户名(&U):" @@ -9768,7 +9890,7 @@ msgstr "密码(&P):" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "显示密码(&S)" @@ -10342,62 +10464,62 @@ msgstr "需要用户名和密码" msgid "You must provide a username and/or password to use this news source." msgstr "您必须为该新闻源提供用户名和/或密码" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "账户" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "(可选)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "(必需)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "创建者: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "最后下载:无" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "未完成过下载" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "%(days)d 天, %(hours)d 小时, %(mins)d 分钟前" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "上次下载时间:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "无法下载新闻,无活动网络连接" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "无网络连接" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "定期新闻下载" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "添加自定义新闻源" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "下载所有设置了定期下载的新闻源" @@ -10532,35 +10654,35 @@ msgstr "<p>不符合此条件。即仅列出<b>不</b>符合该条件的项目 msgid "Negate" msgstr "条件否" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "高级搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "选择搜索时要使用的匹配模式(&W):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "包含:元数据域中任意部分匹配词组" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "等于:整个元数据域完全匹配词组" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10568,49 +10690,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "正则表达式:元数据域中任意部分匹配表达式" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "搜索包含..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "所有下列关键字(&A):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "精确匹配关键字(&P):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "包含一个或多个下列关键字(&O):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "搜索结果不包含..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "搜索结果不包含任何以下关键字(&U):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10620,45 +10742,45 @@ msgstr "" "参考 <a href=\"http://manual.calibre-ebook.com/gui.html#the-search-" "interface\">使用手册</a> 获取更多信息" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "高级搜索(&D)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "输入标题。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "作者(&A):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "标签(G):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "编辑作者名。仅能使用一位作者。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "输入系列名,无索引。仅能是用一个系列名。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "输入标签,用空格间隔" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10666,14 +10788,14 @@ msgstr "输入标签,用空格间隔" msgid "&Clear" msgstr "清除(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "仅搜索特定域:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "标题/作者/系列..." @@ -10974,90 +11096,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "未选择订阅清单" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "附件中的文件:%(fname)s 是用于下载 %(title)s 的订阅清单。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "订阅清单用于 " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "切换到高级模式" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "切换到基础模式" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "源必须有名称" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "源必须有名称" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "源必须有 URL" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "源 %s 必须有 URL" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "该 Feed 已被加入订阅清单" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "无效输入" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "<p>无法创建订阅清单。错误:<br>%s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "替换订阅清单?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "名为 %s 的自定义订阅清单已存在。是否覆盖?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "选择内建的订阅清单" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "请选择订阅清单文件" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "订阅清单" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11468,42 +11598,42 @@ msgstr "一些任务无法被停止。点击“查看详情”显示不能被停 msgid "Unavailable" msgstr "不可用" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "任务:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "Shift+Alt+J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "点击查看任务列表" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr " - 任务" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "确认要中止选中的任务吗?" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "确认要中止所有非设备操作相关的任务吗?" @@ -11680,52 +11810,52 @@ msgstr "大小 (MB)" msgid "Modified" msgstr "已修改" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "查找名称是“{0}”" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "此书 UUID 为 \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "权限拒绝" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "在书库中" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "大小" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "为删除作的标记" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "双击<b>编辑</b>该项<br><br>" @@ -11776,7 +11906,7 @@ msgstr "自动缩小过宽的栏宽到合适大小" msgid "Restore default layout" msgstr "恢复默认布局" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11820,17 +11950,17 @@ msgid "LRF Viewer toolbar" msgstr "LRF 查看程序工具栏" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "下一页" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "上一页" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11928,7 +12058,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "错误数据库位置 %r。calibre 将退出。" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "数据库损坏" @@ -12005,7 +12135,7 @@ msgstr "未处理的异常" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "无法打开 %s。它是否被其它程序占用。" @@ -12136,10 +12266,6 @@ msgstr "浏览(&B)" msgid "T&rim" msgstr "装饰(&R)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "移除(&R)" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "下载封面(&V)" @@ -12168,15 +12294,6 @@ msgstr "无效封面" msgid "Could not change cover as the image is invalid." msgstr "图像无效,无法设置书籍封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "本书没有设置封面" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "封面大小: %(width)d x %(height)d 点" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "改变的标签" @@ -12251,92 +12368,92 @@ msgstr "清除日期" msgid "Publishe&d:" msgstr "出版于(&D):" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "准备批量下载?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "下载 <b>选定的 %d 本书籍</b> 的元数据的操作将在后台执行。要继续吗?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "元数据下载过程中,您可以通过点击主界面右下角的旋转图标查看下载进度。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "当下载完成后,calibre 会请您确认是否要将下载到的元数据写入书库。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "仅下载元数据(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "仅下载封面(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "配置下载参数(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "下载元数据与封面(&B)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "下载 %d 本书籍的元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "开始下载元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "(元数据下载失败)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "(封面下载失败)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" -msgstr "正在下载第 %(num)d 项,共 %(tot)d 项" +msgid "Processed %s" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:61 msgid "Downloaded metadata fields" msgstr "选择要下载元数据字段" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "编辑元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "下一项" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "前一项" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " @@ -12345,7 +12462,7 @@ msgstr "" "自动基于当前标题创建排序标题字段。\n" "使用这个按钮创建排序标题字段的值可以使该字段状况由红色变为绿色。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -12353,35 +12470,39 @@ msgid "" "Click and hold on the button to see it." msgstr "自动基于当前作者创建排序作者字段。使用这个按钮创建排序作者字段的值可以使该字段状况由红色变为绿色。点住本按钮不放可以弹出相关的功能菜单。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "依据“排序作者”设置“作者”" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "依据“作者”设置“排序作者”" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "复到“作者”字段到“排序作者”字段" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "复到“排序作者”字段到“作者”字段" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "对调“作者”和“标题”" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "管理作者数据。用于重命名作者或更正某个作者对应的排序用值" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" -msgstr "删除空系列(系列中没有书籍)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 msgid "" @@ -12406,66 +12527,66 @@ msgstr "改变 calibre 下载元数据的行为" msgid " [%(num)d of %(tot)d]" msgstr " [第 %(num)d 本,共 %(tot)d 本]" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "无法读取封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "无法从 %s 格式中读取封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "%s 格式中封面无效" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "保存更改,编辑 %s 元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "更换封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "注释(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "元数据(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "封面与格式(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "自定义元数据(&U)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "注释(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "基本元数据" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "包含封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "包含简介" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12477,27 +12598,27 @@ msgstr "" "面的项在下载封面阶段时可\n" "能会发现封面,反之亦然。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "参阅" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "calibre 正在从下列位置下载元数据: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "请稍候" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "查询: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "无法下载元数据。请点击“显示详情”获取更多信息。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12507,38 +12628,38 @@ msgstr "" "无法为您找到书籍元数据。请尝试<b>扩大搜索范围</b>。比如:只使用作者的名字或只包含标题中具有特征性的词组。<p>要查看完整的日志,请点击“查看详情”" "。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "当前封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "正在查找……" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "正在从 <b>%s</b> 下载封面,请稍候……" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "无法下载封面,请点击“查看详情”查看详细的出错信息。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "无法为 <b>%s</b> 找到封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "为书籍 %(title)s 找到了 <b>%(num)d</b> 个封面图像,请选择您最喜欢的一个。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "正在下载元数据……" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "正在下载封面..." @@ -12564,62 +12685,62 @@ msgstr "与已有文件格式重复时覆盖已有的文件" msgid "Create new record for each duplicate format" msgstr "文件格式重复时创建一本新的书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "<b>警告:</b> 你放入 %s 文件夹中的任何文件在添加到 calibre 中后会被自动删除。你确定吗?" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "在此处您可以控制 calibre 如何从您添加的文件读取元数据。calibre 可从文件内容读取元数据,也可以从文件名读取。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "从文件内容而不是文件名读取元数据(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "对调作者姓和名。仅影响来自文件名的元数据。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "交换作者姓和名(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "当使用“复制到书库”功能在书库间复制书籍时,不改变文件修改日期" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12637,11 +12758,11 @@ msgstr "" "\n" "匹配书籍标题时会忽略冠词(\"the\", \"a\", \"an\")、标点符号、大小写等。作者会进行精确匹配。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "自动合并添加到 calibre 书库的书籍,如果它们已经存在于书库中(&A):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12670,49 +12791,25 @@ msgstr "" "匹配书籍标题时会忽略冠词(\"the\", \"a\", \"an\")、标点符号、大小写等。\n" "作者会进行精确匹配。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "添加书籍时自动添加标签(&T):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "逗号间隔的标签列表,适用于所有添加到书库中的书籍" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "从文件名配置元数据(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "书籍添加处理(&P)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "指定一个文件夹,以后任何放入该文件夹中的文件将被自动添加到 calibre 书库中(需重启生效)" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "<b>警告:</b> 该文件夹中的文件在添加到 calibre 中后会被自动删除。" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12720,11 +12817,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "指定一个文件夹,以后任何放入该文件夹中的文件将被自动添加到 calibre 书库中(需重启生效)" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "<b>警告:</b> 该文件夹中的文件在添加到 calibre 中后会被自动删除。" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "自动添加(&A)" @@ -13628,6 +13753,7 @@ msgid "Never" msgstr "从不" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "首字母" @@ -13646,7 +13772,7 @@ msgstr "栏目着色" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr " 或 " @@ -14491,11 +14617,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "保存当前的组合查找项。你可以通过改变名称并保存来重命名组合查找项,也可以改变组合查找项的值并保存来改变已经定义的组合查找项。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "保存(&S)" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "创建自定义分类(&U):" @@ -14551,7 +14672,7 @@ msgid "" msgstr "此处控制发送到设备使用的书籍保存方式。此设定会被单个设备单独设定所覆盖,在首选项->高级->插件可定义单独设置" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "无法启动内容服务程序" @@ -14572,38 +14693,38 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "显示书籍封面的最大尺寸(宽度x高度). 过大的封面将会被相应缩小. " -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "最大封面大小(&c):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "服务器端口(&p):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "每次请求最大 OPDS 项(&O):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "不分组 OPDS 项数量限制:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "限制(已存搜索):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " @@ -14612,63 +14733,56 @@ msgstr "" "该限制(基于已保存的搜索条件)会限制在内容服务器中所显示的书籍列表仅限于指定的搜索结果。这个设置是基于每个书库的(也就是说你可以为不同的书库指定不同的限制" "条件)。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -"<p>由于 Google's Android 的存在一些问题,Andorid 设备无法\n" -"访问被设置了密码保护的服务器。\n" -"<br>\n" -"<p>如果你需要用 Android 手机或平板来访问服务器,请不要设置\n" -"密码。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" -msgstr "Android 设备不支持需要输入密码的服务器" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "URL 前缀(&U):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "启动服务器(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "停止服务器(&o)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "测试服务器(&T)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "calibre 带有一个网络服务程序,您可以由此使用浏览器访问你的书库。对服务器程序配置的修改需要重启服务器程序生效。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "calibre 启动时自动运行服务器(&A)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "查看服务器日志(&s)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -15560,27 +15674,27 @@ msgstr "更新这么多本书的元数据需要花费一些时间。你确定要 msgid "Searches" msgstr "搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "重命名用户分类" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "重命名用户分类名称时不能使用点号" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "%s 这个名称已经被占用" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "复制搜索名称" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "已存搜索名 %s 被占用。" @@ -15832,6 +15946,14 @@ msgstr "显示所有分类" msgid "Change sub-categorization scheme" msgstr "修改子分类模式" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "首字母只在按名称排序时可用" @@ -15867,46 +15989,46 @@ msgstr "正在排队 " msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "转换书籍 第 %(num)d 本,共 %(tot)d 本 (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "抓取新闻来源于 " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "转换现有" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "下列书籍已经被转换为 %s 格式。您希望转换它们么?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "捐助 calibre 项目(&D)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "恢复(&R)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "弹出已连接设备(&E)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "退出 calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "清除当前搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "调试模式" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15914,11 +16036,11 @@ msgid "" "automatically." msgstr "您以调试模式启动 calibre。退出程序后,Log 文件将存在文件:%s<p> Log 将自动显示。" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15926,7 +16048,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15934,23 +16056,23 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "转换错误" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "清单禁用" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "<b>失败</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "仍有任务运行。您是否希望退出?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" @@ -15960,11 +16082,11 @@ msgstr "" " 退出可能导致设备损坏。<br>\n" " 确定退出么?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "活动的任务" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -16022,27 +16144,27 @@ msgstr "%d 个插件更新可用" msgid "Install and configure user plugins" msgstr "安装并配置用户插件" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "编辑书签" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "新书签标题:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "导出书签" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "已存书签" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "导入书签" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "Pickle 书签(*.pickle)" @@ -16160,7 +16282,7 @@ msgid "Mouse &wheel flips pages" msgstr "滚轮翻页(&W)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -16214,125 +16336,125 @@ msgstr "用户样式表(&S)" msgid "No results found for:" msgstr "未找到结果:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "定制电子书查看器的选项" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "记住上次使用窗口大小" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "设定用户 CSS 样式表。它将可以定制所有书籍外观。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "调整查看器窗口中较大图像大小,使其适合显示在窗口中" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "断词分行文本" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "默认使用断词分行规则的语言" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "退出时,记忆文档当前位置" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "可用滚轮翻页" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "翻页动画秒数,默认半秒。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "字体选项" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "衬线字体" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "Sans-serif 字体" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "等宽字体" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "标准字体大小 px 值" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "等宽字体大小 px 值" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "标准字体类型" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "正在修改" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "你正在修改一个键盘快捷键设置。在快捷键编辑框外点击可以完成设置。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "词典查询(&L)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "转到..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "下一节" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "上一节" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "文档起始" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "文档结尾" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "节起始" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "节末尾" @@ -16384,73 +16506,73 @@ msgstr "左翻" msgid "Scroll right" msgstr "右翻" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "书籍格式" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "书内位置" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "转到引用。要找到引用编号,请使用引用模式。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "书内文本搜索" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "打印预览" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "清除最近打开的书籍列表" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "正在连接 dict.org 查询:<b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "选择电子书" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "电子书" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" @@ -16459,78 +16581,78 @@ msgstr "" "设置字体大小 %(which)s\n" "当前放大比例: %(mag).1f" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "更大" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "更小" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "未找到 %s 的匹配" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "正在加载流..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "正在排布流 %s..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "书签#%d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "添加书签" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "编辑书签标题:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "管理书签" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "正在加载电子书..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "无法打开电子书" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "电子书查看器控制选项" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "若指定,查看器窗口在打开时将试图转到前面。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "若选定,查看窗口开启时试图全屏。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "在控制台显示 javascript 警告以及控制台信息" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16774,10 +16896,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "<p>选择书库位置。当您向 calibre 添加书籍,书籍将会复制到此位置。请用<b>空目录</b>创建新的书库:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "变更(&C)" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -18063,17 +18181,17 @@ msgstr "标签必须只包含小写字母,数字及下划线,并且以字母 msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)s 平均评分为 %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "<p>正在将旧数据库转移到位于 %s 的新数据库<br><center>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "正在复制<b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "正在压缩数据库" @@ -18314,7 +18432,7 @@ msgstr "全部书籍" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "最新" @@ -18477,40 +18595,40 @@ msgid "" "a small screen" msgstr "完整界面可以提供给你更多的功能,但在小尺寸的屏幕上可能效果不会很好。" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "%d本书" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "%d项" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "星级: %s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "标签:%s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "系列: %(series)s [%(sidx)s]<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "书库中的书籍" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "分类 " -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "书籍整理 " @@ -18604,7 +18722,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -19468,112 +19586,112 @@ msgstr "无标题文章" msgid "Unknown News Source" msgstr "未知新闻来源" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "订阅清单 “%s” 需要用户名与密码。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "下载完成" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "下载下列文章失败:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "下载下列文章的某些部分失败:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr " 自 " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "\t失败链接:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "无法获取文章。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "调试用信息出现在日志文件前部" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "以 -vv 参数运行,以便查看出错的原因" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "正在抓取源..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "从索引页面获取了源" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "正在尝试下载封面..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "正在生成刊头..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "开始下载 [ %d 线程]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "新闻源下载到 %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "无法下载封面:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "正在从 %s 下载封面" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "已下载刊头图像" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "无标题文章" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "已下载文章:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "下载失败文章:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "抓取源" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "登录失败,检查您 calibre 期刊服务的用户名密码。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/zh_HK.po b/src/calibre/translations/zh_HK.po index a944ce4c36..929b17fd55 100644 --- a/src/calibre/translations/zh_HK.po +++ b/src/calibre/translations/zh_HK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" "PO-Revision-Date: 2011-07-11 08:59+0000\n" "Last-Translator: Nader stouhy <Unknown>\n" "Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n" @@ -15,8 +15,8 @@ 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-03-25 05:02+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-04-28 04:52+0000\n" +"X-Generator: Launchpad (build 15149)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" @@ -26,8 +26,8 @@ msgstr "是否絕對沒有" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -38,9 +38,9 @@ msgstr "是否絕對沒有" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -78,9 +78,9 @@ msgstr "是否絕對沒有" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -90,7 +90,7 @@ msgstr "是否絕對沒有" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -100,16 +100,20 @@ msgstr "是否絕對沒有" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -137,20 +141,20 @@ msgstr "是否絕對沒有" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -158,25 +162,24 @@ msgstr "是否絕對沒有" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -184,14 +187,15 @@ msgstr "是否絕對沒有" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -931,21 +935,21 @@ msgstr "" msgid "Debug log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "" @@ -1061,21 +1065,21 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1083,8 +1087,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "" @@ -1133,20 +1137,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "" @@ -1154,8 +1158,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "" @@ -1165,8 +1169,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "" @@ -1174,13 +1178,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "" @@ -1444,11 +1448,11 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" msgstr "" @@ -1785,23 +1789,23 @@ msgstr "" msgid "Communicate with the Pico reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "" @@ -2064,36 +2068,36 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "" @@ -2410,56 +2414,56 @@ msgstr "" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " "will ignore them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " "position on multiple devices. Complain to Amazon." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2468,7 +2472,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "" @@ -3091,7 +3095,7 @@ msgid "Set the publication date." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." +msgid "Set the book timestamp (no longer used anywhere)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 @@ -3185,27 +3189,35 @@ msgstr "" msgid "Replacement to replace the text found with sr3-search." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "" @@ -3520,19 +3532,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" @@ -3549,7 +3561,7 @@ msgid "Producer" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3593,7 +3605,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "" @@ -3705,59 +3717,59 @@ msgid "" "LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 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:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "" @@ -3825,78 +3837,79 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 -msgid "Index" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 -msgid "Glossary" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 -msgid "Acknowledgements" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 -msgid "Bibliography" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 -msgid "Colophon" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 -msgid "Copyright" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 -msgid "Dedication" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 -msgid "Epigraph" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 -msgid "Foreword" +msgid "Title Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 -msgid "List of Illustrations" +msgid "Index" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 -msgid "List of Tables" +msgid "Glossary" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 -msgid "Notes" +msgid "Acknowledgements" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 -msgid "Preface" +msgid "Bibliography" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +msgid "Colophon" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 +msgid "Copyright" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 +msgid "Dedication" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 +msgid "Epigraph" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 +msgid "Foreword" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 +msgid "List of Illustrations" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 +msgid "List of Tables" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 +msgid "Notes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 +msgid "Preface" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "" @@ -4140,155 +4153,155 @@ msgstr "" msgid "Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "" @@ -4394,18 +4407,18 @@ msgid "Shift+A" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" +msgid "Control the adding of books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "" @@ -4415,7 +4428,7 @@ msgid "Cannot add files as no books are selected" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "" @@ -4558,6 +4571,10 @@ msgstr "" msgid "Generating %s catalog..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "" @@ -4619,7 +4636,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "" @@ -4678,7 +4695,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "" @@ -4794,7 +4811,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "" @@ -4828,23 +4845,23 @@ msgstr "" msgid "Create a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -4911,9 +4928,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5121,98 +5138,98 @@ msgstr "" msgid "Manage the collections on this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5220,27 +5237,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5249,7 +5266,7 @@ msgid "" "changed.<br><br>Please confirm you want to proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5262,7 +5279,7 @@ msgid "" "calibre library.<br><br> Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5274,15 +5291,15 @@ msgid "" "Are you <b>sure</b> you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5666,7 +5683,7 @@ msgid "Selected books have no formats" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "" @@ -5758,12 +5775,12 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -5891,7 +5908,7 @@ msgstr "" #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -5934,7 +5951,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -5959,7 +5976,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "" @@ -5977,17 +5994,17 @@ msgstr "" msgid "Remove Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6061,7 +6078,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6072,7 +6089,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6488,7 +6505,7 @@ msgid "Bulk Convert" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "" @@ -7044,7 +7061,7 @@ msgid "&Monospaced font family:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "" @@ -7055,33 +7072,44 @@ msgid "" "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr "" @@ -7145,7 +7173,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "" @@ -7321,23 +7349,33 @@ msgstr "" msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "" @@ -7389,62 +7427,143 @@ msgstr "" msgid "Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" "Replace" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "" @@ -7770,11 +7889,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial</a>." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "" @@ -8202,7 +8321,7 @@ msgid "My Books" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "" @@ -8379,7 +8498,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "" @@ -8507,7 +8626,7 @@ msgstr "" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8523,7 +8642,7 @@ msgid "Set options for converting %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8564,7 +8683,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "" @@ -8597,11 +8716,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "" @@ -8616,13 +8735,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "" @@ -8702,8 +8821,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "" @@ -8750,17 +8869,17 @@ msgid "Copy to author" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "" @@ -8848,41 +8967,47 @@ msgid "&Hide all jobs" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -8895,7 +9020,7 @@ msgid "Standard metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "" @@ -9076,7 +9201,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "" @@ -9220,13 +9345,13 @@ msgid "Set from &ebook file(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "" @@ -9395,7 +9520,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "" @@ -9409,7 +9534,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "" @@ -9958,62 +10083,62 @@ msgstr "" msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "" @@ -10142,35 +10267,35 @@ msgstr "" msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10178,49 +10303,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10228,45 +10353,45 @@ msgid "" "interface\">User Manual</a> for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10274,14 +10399,14 @@ msgstr "" msgid "&Clear" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "" @@ -10582,90 +10707,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11060,43 +11193,43 @@ msgstr "" msgid "Unavailable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "" msgstr[1] "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "" @@ -11273,52 +11406,52 @@ msgstr "" msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "" @@ -11369,7 +11502,7 @@ msgstr "" msgid "Restore default layout" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11413,17 +11546,17 @@ msgid "LRF Viewer toolbar" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11521,7 +11654,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "" @@ -11598,7 +11731,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "" @@ -11722,10 +11855,6 @@ msgstr "" msgid "T&rim" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "" @@ -11754,15 +11883,6 @@ msgstr "" msgid "Could not change cover as the image is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "" @@ -11835,65 +11955,65 @@ msgstr "" msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" +msgid "Processed %s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 @@ -11901,33 +12021,33 @@ msgstr "" msgid "Downloaded metadata fields" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " "green." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -11935,34 +12055,38 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 @@ -11988,66 +12112,66 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12055,27 +12179,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12083,38 +12207,38 @@ msgid "" "Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "" @@ -12140,62 +12264,62 @@ msgstr "" msgid "Create new record for each duplicate format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12208,11 +12332,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12232,49 +12356,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12282,11 +12382,39 @@ msgid "" " you want to add it anyway." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "" @@ -13145,6 +13273,7 @@ msgid "Never" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "" @@ -13163,7 +13292,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr "" @@ -13970,11 +14099,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "" @@ -14027,7 +14151,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "" @@ -14048,96 +14172,94 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -14971,27 +15093,27 @@ msgstr "" msgid "Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "" @@ -15241,6 +15363,14 @@ msgstr "" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "" @@ -15276,46 +15406,46 @@ msgstr "" msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15323,11 +15453,11 @@ msgid "" "automatically." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15335,7 +15465,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15343,34 +15473,34 @@ msgid "" "successful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15426,27 +15556,27 @@ msgstr "" msgid "Install and configure user plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "" @@ -15564,7 +15694,7 @@ msgid "Mouse &wheel flips pages" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15616,125 +15746,125 @@ msgstr "" msgid "No results found for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "" @@ -15786,151 +15916,151 @@ msgstr "" msgid "Scroll right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" "Current magnification: %(mag).1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16166,10 +16296,6 @@ msgid "" "will be copied here. Use an <b>empty folder</b> for a new calibre library:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17318,17 +17444,17 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "" @@ -17566,7 +17692,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "" @@ -17729,40 +17855,40 @@ msgid "" "a small screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "" @@ -17856,7 +17982,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -18720,112 +18846,112 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." diff --git a/src/calibre/translations/zh_TW.po b/src/calibre/translations/zh_TW.po index aad1a729bd..47ad09c5b0 100644 --- a/src/calibre/translations/zh_TW.po +++ b/src/calibre/translations/zh_TW.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-03-24 10:42+0000\n" -"PO-Revision-Date: 2012-02-14 04:05+0000\n" +"POT-Creation-Date: 2012-04-27 05:30+0000\n" +"PO-Revision-Date: 2012-05-02 00:59+0000\n" "Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n" "Language-Team: Chinese (traditional)\n" "MIME-Version: 1.0\n" "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-03-25 05:03+0000\n" -"X-Generator: Launchpad (build 14981)\n" +"X-Launchpad-Export-Date: 2012-05-03 05:25+0000\n" +"X-Generator: Launchpad (build 15185)\n" "Language: zh_TW\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 @@ -27,8 +27,8 @@ msgstr "完全不做任何事" #: /home/kovid/work/calibre/src/calibre/db/cache.py:106 #: /home/kovid/work/calibre/src/calibre/db/cache.py:109 #: /home/kovid/work/calibre/src/calibre/db/cache.py:120 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:315 -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:316 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:321 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:322 #: /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/jetbook/driver.py:74 @@ -39,9 +39,9 @@ msgstr "完全不做任何事" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:661 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:337 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:338 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:489 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:347 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:348 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:496 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:57 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:109 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/chm_input.py:112 @@ -79,9 +79,9 @@ msgstr "完全不做任何事" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:470 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:472 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1132 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1243 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1134 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/plucker.py:25 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -91,7 +91,7 @@ msgstr "完全不做任何事" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/rtf.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/snb.py:16 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:324 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:346 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 @@ -101,16 +101,20 @@ msgstr "完全不做任何事" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:365 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:466 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:125 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:117 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:159 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:78 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:133 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:175 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:615 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:312 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:497 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:318 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:397 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:168 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:170 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:829 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:838 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:353 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:356 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/parse_utils.py:360 @@ -138,20 +142,20 @@ msgstr "完全不做任何事" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:424 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:417 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:425 #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:400 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:602 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:603 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:159 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1205 #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1208 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:56 @@ -159,25 +163,24 @@ msgstr "完全不做任何事" #: /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:811 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:377 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:206 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:408 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1059 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1267 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1270 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1361 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1060 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1268 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1271 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1274 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1362 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:84 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:245 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:399 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:164 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:171 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:206 #: /home/kovid/work/calibre/src/calibre/library/cli.py:234 #: /home/kovid/work/calibre/src/calibre/library/database.py:914 #: /home/kovid/work/calibre/src/calibre/library/database2.py:561 @@ -185,14 +188,15 @@ msgstr "完全不做任何事" #: /home/kovid/work/calibre/src/calibre/library/database2.py:580 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2087 #: /home/kovid/work/calibre/src/calibre/library/database2.py:2241 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3301 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3303 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3440 -#: /home/kovid/work/calibre/src/calibre/library/server/content.py:249 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3305 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3444 #: /home/kovid/work/calibre/src/calibre/library/server/content.py:250 +#: /home/kovid/work/calibre/src/calibre/library/server/content.py:251 #: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:245 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:157 #: /home/kovid/work/calibre/src/calibre/library/server/opds.py:160 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:163 #: /home/kovid/work/calibre/src/calibre/library/server/xml.py:79 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:46 @@ -775,7 +779,7 @@ msgstr "適用於 iPad 及類似具有解析度 768x1024 的裝置" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:441 msgid "" "Intended for the iPad 3 and similar devices with a resolution of 1536x2048" -msgstr "" +msgstr "用於 iPad3 和類似解析度為 1536x2048 的裝置" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:447 msgid "Intended for generic tablet devices, does no resizing of images" @@ -819,7 +823,7 @@ msgstr "這個設定檔適用於Amazon Kindle DX" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:669 msgid "This profile is intended for the Amazon Kindle Fire." -msgstr "" +msgstr "這個設定檔用於 Amazon Kindle Fire。" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:732 msgid "This profile is intended for the B&N Nook Color." @@ -939,21 +943,21 @@ msgstr "記憶卡 B" msgid "Debug log" msgstr "除錯紀錄" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:17 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:19 msgid "Communicate with Android phones." msgstr "和Android 為OS的電話交換資料" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:165 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:170 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "要將電子書傳送至裝置的目錄清單,以逗號分隔。會使用第一個存在的目錄" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:255 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:261 msgid "Communicate with S60 phones." msgstr "與 S60 電話連接。" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:274 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:280 msgid "Communicate with WebOS tablets." msgstr "與 WebOS 平板電腦連接。" @@ -1082,21 +1086,21 @@ msgstr "" "點選「顯示詳細資料」來查看清單。" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2726 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:102 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:103 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:471 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:558 -#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:577 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:568 +#: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:587 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1051 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1057 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:1092 #: /home/kovid/work/calibre/src/calibre/gui2/actions/fetch_news.py:73 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:464 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1154 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1163 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1165 #: /home/kovid/work/calibre/src/calibre/library/database2.py:346 #: /home/kovid/work/calibre/src/calibre/library/database2.py:359 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3160 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3162 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "新聞" @@ -1104,8 +1108,8 @@ msgstr "新聞" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2727 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:65 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:65 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3116 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3134 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3118 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3136 msgid "Catalog" msgstr "分類" @@ -1156,20 +1160,20 @@ msgstr "Bambook" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:111 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:337 #: /home/kovid/work/calibre/src/calibre/devices/prst1/driver.py:155 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:141 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 #: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:147 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:215 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:222 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:245 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:150 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:218 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:225 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:248 msgid "Getting list of books on device..." msgstr "從裝置中取得書籍列表" #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:264 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:268 #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:324 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:274 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:276 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:277 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:279 msgid "Transferring books to device..." msgstr "正在傳送書籍到裝置中..." @@ -1177,8 +1181,8 @@ msgstr "正在傳送書籍到裝置中..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:344 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:474 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:509 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:298 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:329 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:301 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:332 msgid "Adding books to device metadata listing..." msgstr "將書籍加入裝置的元數據清單..." @@ -1188,8 +1192,8 @@ msgstr "將書籍加入裝置的元數據清單..." #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:126 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:426 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:458 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:335 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:356 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:338 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:359 msgid "Removing books from device..." msgstr "正在從裝置中移除書籍..." @@ -1197,13 +1201,13 @@ msgstr "正在從裝置中移除書籍..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:374 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:462 #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:469 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:363 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:368 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:366 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:371 msgid "Removing books from device metadata listing..." msgstr "將書籍從裝置的元數據清單移除..." #: /home/kovid/work/calibre/src/calibre/devices/bambook/driver.py:442 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:398 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:401 msgid "Sending metadata to device..." msgstr "正在傳送元數據到裝置..." @@ -1229,7 +1233,7 @@ msgstr "Kovid Goyal" #: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:36 msgid "Communicate with the Blackberry playbook." -msgstr "" +msgstr "與 Blackberry playbook 連接。" #: /home/kovid/work/calibre/src/calibre/devices/boeye/driver.py:14 msgid "Communicate with BOEYE BEX Serial eBook readers." @@ -1273,7 +1277,7 @@ msgstr "與 PocketBook 701 連接。" #: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:294 msgid "Communicate with the Infibeam Pi2 reader." -msgstr "" +msgstr "與 Infibeam Pi2 閱讀器連接。" #: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" @@ -1345,7 +1349,7 @@ msgstr "與 Elonex EB 511 eBook 閱讀器連接。" #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:171 msgid "Communicate with the Cybook Odyssey eBook reader." -msgstr "" +msgstr "與 Cybook Odyssey 電子書閱讀器連接。" #: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16 msgid "Communicate with the IRex Iliad eBook reader." @@ -1387,7 +1391,7 @@ msgstr "與 JetBook Mini 閱讀器連接。" #: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:143 msgid "Communicate with the JetBook Color reader." -msgstr "" +msgstr "與 JetBook Color 閱讀器連接。" #: /home/kovid/work/calibre/src/calibre/devices/kindle/apnx.py:32 #, python-format @@ -1429,7 +1433,7 @@ msgstr "<b>位置 %(dl)d • %(typ)s</b><br />" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:289 msgid "Communicate with the Kindle 2/3/4/Touch eBook reader." -msgstr "" +msgstr "與 Kindle 2/3/4/Touch 電子書閱讀器連接。" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:298 msgid "Send page number information when sending books" @@ -1447,7 +1451,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:305 msgid "Use slower but more accurate page number calculation" -msgstr "" +msgstr "使用較慢但較精確的頁碼計算方式" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:307 msgid "" @@ -1460,7 +1464,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:311 msgid "Custom column name to retrieve page counts from" -msgstr "" +msgstr "用來取回頁數的自訂欄位" #: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:313 msgid "" @@ -1470,13 +1474,13 @@ msgid "" "example, #pages. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:415 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:419 msgid "Communicate with the Kindle DX eBook reader." msgstr "與 Kindle DX eBook 閱讀器連接。" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:424 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:428 msgid "Communicate with the Kindle Fire" -msgstr "" +msgstr "與 Kindle Fire 連接" #: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:24 msgid "Communicate with the Kobo Reader" @@ -1672,7 +1676,7 @@ msgstr "與 the Nook eBook 閱讀器連接。" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:84 msgid "Communicate with the Nook Color, TSR and Tablet eBook readers." -msgstr "" +msgstr "與 Nook Color、 TSR 與 Tablet 電子書閱讀器連接。" #: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." @@ -1823,23 +1827,23 @@ msgstr "與 Archos 閱讀器連接。" msgid "Communicate with the Pico reader." msgstr "與 Pico 閱讀器連接。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:68 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:69 msgid "Communicate with the iPapyrus reader." msgstr "與 iPapyrus 閱讀器連接。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:79 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:80 msgid "Communicate with the Sovos reader." msgstr "與 Sovos 閱讀器連接。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:89 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:90 msgid "Communicate with the Sunstech EB700 reader." msgstr "與 Sunstech EB700 閱讀器連接。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:100 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:101 msgid "Communicate with the Stash W950 reader." msgstr "與 Stash W950 閱讀器連接。" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:112 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:113 msgid "Communicate with the Wexler reader." msgstr "與 Wexler 閱讀器連接。" @@ -1879,7 +1883,7 @@ msgstr "%s 的主記憶體是唯讀的。這通常是因為檔案系統的錯誤 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:807 msgid "Unable to mount the device" -msgstr "" +msgstr "無法掛載裝置" #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:978 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:980 @@ -2122,36 +2126,36 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:157 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:16 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:20 msgid "Modify the document text and structure using user defined patterns." msgstr "以使用者定義的形式修改文件文字與結構。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:166 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:167 msgid "Control auto-detection of document structure." msgstr "控制文件結構的自動偵測。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:176 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:177 msgid "" "Control the automatic generation of a Table of Contents. By default, if the " "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." msgstr "控制目錄頁的自動產生過程。預設情況下,如果來源檔案有目錄頁,它會優先使用而不自動產生。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:186 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:187 msgid "Options to set metadata in the output" msgstr "用來設定輸出的元數據的選項" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:190 msgid "Options to help with debugging the conversion" msgstr "用來協助轉換程序除錯的選項" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:217 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:219 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:289 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:322 msgid "Output saved to" msgstr "將輸出儲存到" @@ -2489,30 +2493,30 @@ msgstr "要內嵌的等寬字族字型" msgid "Comic" msgstr "漫畫" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:23 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:21 msgid "When present, use author sort field as author." msgstr "當出現時,使用作者排序欄位當成作者。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:27 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:25 msgid "" "Don't add Table of Contents to the book. Useful if the book has its own " "table of contents." msgstr "不要在書籍中加入目錄頁。如果書籍本身就有目錄頁時很有用。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:57 msgid "Title for any generated in-line table of contents." msgstr "用於任何產生的行內目錄頁的標題。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:32 msgid "Disable compression of the file contents." msgstr "停用對檔案內容的壓縮。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:37 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:35 msgid "Tag marking book to be filed with Personal Docs" msgstr "將書籍歸檔為個人文件的標籤" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:41 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:39 msgid "" "Ignore margins in the input document. If False, then the MOBI output plugin " "will try to convert margins specified in the input document, otherwise it " @@ -2520,19 +2524,19 @@ msgid "" msgstr "" "忽略輸入文件中的邊界。如果設為「False」,則 MOBI 輸出外掛程式會嘗試轉換在輸入文件中指定的邊界,若是設為「True」則會忽略它們。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:47 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:45 msgid "" "When adding the Table of Contents to the book, add it at the start of the " "book instead of the end. Not recommended." msgstr "要在書籍中加入目錄頁時,加在書籍開頭而不要加在結尾。不建議使用。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:51 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:49 msgid "" "Extract the contents of the MOBI file to the specified directory. If the " "directory already exists, it will be deleted." msgstr "將 MOBI 檔案的內容解壓縮到指定的目錄。如果目錄已經存在,它會被刪除。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:56 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:54 msgid "" "Enable sharing of book content via Facebook etc. on the Kindle. WARNING: " "Using this feature means that the book will not auto sync its last read " @@ -2540,7 +2544,7 @@ msgid "" msgstr "" "啟用透過 Facebook 等分享 Kindle 書籍的內容。警告:使用這個功能代表書籍不會自動同步在多個裝置上前次閱讀的位置。請向 Amazon 抱怨。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:63 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:61 msgid "" "By default calibre converts all images to JPEG format in the output MOBI " "file. This is for maximum compatibility as some older MOBI viewers have " @@ -2549,7 +2553,7 @@ msgid "" "large when converted to JPEG." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:114 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/mobi_output.py:103 #: /home/kovid/work/calibre/src/calibre/ebooks/epub/periodical.py:125 msgid "All articles" msgstr "所有文章" @@ -2598,7 +2602,7 @@ msgstr "測量的單位。預設為英吋。選擇有 %s 注意:這不會影 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 "" +msgstr "紙張大小。當預設輸出設定檔時這個大小會被覆蓋。預設是 letter。選項有 %s" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:79 msgid "" @@ -3212,8 +3216,8 @@ msgid "Set the publication date." msgstr "設定出版日期。" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:539 -msgid "Set the book timestamp (used by the date column in calibre)." -msgstr "設定書籍時間戳記(用於 calibre 日期欄位)。" +msgid "Set the book timestamp (no longer used anywhere)" +msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:543 msgid "" @@ -3306,27 +3310,35 @@ msgstr "要以 sr3-replace 取代的搜尋模式 (正規表示式)。" msgid "Replacement to replace the text found with sr3-search." msgstr "用來取代以 sr3-search 找到的文字。" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:733 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:632 +msgid "" +"Path to a file containing search and replace regular expressions. The file " +"must contain alternating lines of regular expression followed by replacement " +"pattern (which can be an empty line). The regular expression must be in the " +"python regex syntax and the file must be UTF-8 encoded." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:741 msgid "Could not find an ebook inside the archive" msgstr "無法在壓縮文件中找到電子書籍" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:791 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:799 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "系列索引和評等的數值必須為數字。忽略" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:798 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:806 msgid "Failed to parse date/time" msgstr "解析日期/時刻失敗" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:957 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:965 msgid "Converting input to HTML..." msgstr "將輸入轉換為HTML格式..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:984 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:992 msgid "Running transforms on ebook..." msgstr "正在對電子書籍進行轉換..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1088 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:1096 msgid "Creating" msgstr "正在建立" @@ -3661,19 +3673,19 @@ msgstr "否" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:375 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:580 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:583 msgid "Title" msgstr "書名" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:774 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "作者" @@ -3690,7 +3702,7 @@ msgid "Producer" msgstr "製作人" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:777 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:935 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:157 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:245 msgid "Comments" @@ -3733,7 +3745,7 @@ msgstr "時間戳記" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:786 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:168 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "發佈於" @@ -3859,59 +3871,59 @@ msgstr "" "\n" "從 LibraryThing.com 以 ISBN 辨識書籍並取回封面圖片/社交網路元數據\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1432 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:947 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1434 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:946 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:41 msgid "Cover" msgstr "封面" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:488 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:491 msgid "Downloads metadata and covers from Amazon" msgstr "從 Amazon 下載元數據和封面" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 msgid "US" msgstr "TW" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:499 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 msgid "France" msgstr "法國" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:500 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 msgid "Germany" msgstr "德國" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:501 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 msgid "UK" msgstr "英國(UK)" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:502 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:505 msgid "Italy" msgstr "義大利" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:503 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:506 msgid "Japan" msgstr "日文" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:504 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:507 msgid "Spain" msgstr "西班牙文" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:511 msgid "Amazon website to use:" msgstr "要使用的 Amazon 網站:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:509 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:512 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "從 Amazon 取得的元數據會使用那個國家的 Amazon 網站。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:741 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:744 msgid "Amazon timed out. Try again later." msgstr "Amazon 已逾時。請稍後再試。" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:177 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:189 msgid "Metadata source" msgstr "元數據來源" @@ -3981,78 +3993,79 @@ msgstr "從 OZON.ru 下載元數據和封面" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "這是 Amazon Topaz 書籍。它是無法被處理的。" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:498 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:464 msgid "No details available" msgstr "無可取得的詳情" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1238 -msgid "Title Page" -msgstr "標題頁" - -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1239 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:199 msgid "Table of Contents" msgstr "目錄" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1240 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +msgid "Title Page" +msgstr "標題頁" + +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 msgid "Index" msgstr "索引" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1241 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 msgid "Glossary" msgstr "辭彙" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1242 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 msgid "Acknowledgements" msgstr "致謝" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1243 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 msgid "Bibliography" msgstr "參考書目" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1244 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 msgid "Colophon" msgstr "版權頁" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1245 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1254 msgid "Copyright" msgstr "版權所有" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1246 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1255 msgid "Dedication" msgstr "呈獻" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1247 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1256 msgid "Epigraph" msgstr "題辭" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1248 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1257 msgid "Foreword" msgstr "序" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1249 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1258 msgid "List of Illustrations" msgstr "插圖的清單" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1250 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1259 msgid "List of Tables" msgstr "表格的清單" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1251 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1260 msgid "Notes" msgstr "備註" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1261 msgid "Preface" msgstr "序" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1253 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1262 msgid "Main Text" msgstr "主文" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:43 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:45 #, python-format msgid "%s format books are not supported" msgstr "%s 格式的電子書尚未支援" @@ -4340,155 +4353,155 @@ msgstr "找不到 pdftohtml,請檢查您的 PATH 是否有它" msgid "Table of Contents:" msgstr "目錄:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:120 msgid "Send file to storage card instead of main memory by default" msgstr "預設傳送檔案到記憶卡而非主記憶體" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:122 msgid "Confirm before deleting" msgstr "刪除前確認" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:124 msgid "Main window geometry" msgstr "主視窗位置大小" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:126 msgid "Notify when a new version is available" msgstr "當有新版本可用時通知" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:128 msgid "Use Roman numerals for series number" msgstr "在系列編號中使用羅馬數字" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:130 msgid "Sort tags list by name, popularity, or rating" msgstr "依名稱、熱門程度或評等排序標籤清單" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:132 msgid "Match tags by any or all." msgstr "以任何或全部項目比對標籤。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:134 msgid "Number of covers to show in the cover browsing mode" msgstr "在封面瀏覽模式中要顯示的封面數量" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:136 msgid "Defaults for conversion to LRF" msgstr "轉換為 LRF 的預設值" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 msgid "Options for the LRF ebook viewer" msgstr "LRF 電子書檢視器的選項" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:141 msgid "Formats that are viewed using the internal viewer" msgstr "使用內部檢視器觀看的格式" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 msgid "Columns to be displayed in the book list" msgstr "在書籍清單中顯示的欄位" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 msgid "Automatically launch content server on application startup" msgstr "應用程式啟動時自動執行內容伺服器" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 msgid "Oldest news kept in database" msgstr "保留在資料庫中最舊的新聞" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:146 msgid "Show system tray icon" msgstr "顯示系統匣圖示" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:148 msgid "Upload downloaded news to device" msgstr "將下載的新聞上傳到裝置" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:150 msgid "Delete news books from library after uploading to device" msgstr "上傳到裝置後從書庫剛除新聞書籍" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "在個別視窗中顯示 cover flow 而非在主 calibre 視窗中顯示" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Disable notifications from the system tray icon" msgstr "停用系統匣圖示的通知" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:156 msgid "Default action to perform when send to device button is clicked" msgstr "當按下「傳送到裝置」按鈕時的預設動作" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:161 msgid "" "Start searching as you type. If this is disabled then search will only take " "place when the Enter or Return key is pressed." msgstr "輸入時即開始搜尋。如果停用此項,搜尋只有在按下 Enter 或 Return 鍵後才會開始。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:164 msgid "" "When searching, show all books with search results highlighted instead of " "showing only the matches. You can use the N or F3 keys to go to the next " "match." msgstr "搜尋時,將搜尋結果在所有書籍中以強調方式顯示,而不是只顯示符合項。您可以使用 N 或 F3 鍵移至下一個符合項。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:189 msgid "" "Maximum number of simultaneous conversion/news download jobs. This number is " "twice the actual value for historical reasons." msgstr "同時轉換/新聞下載工作的最大數量。由於歷史因素這個數量為實際值的兩倍。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:192 msgid "Download social metadata (tags/rating/etc.)" msgstr "下載社交網路元數據(標籤/評等/其他)" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:194 msgid "Overwrite author and title with new metadata" msgstr "以新的元數據覆蓋作者和書名" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:196 msgid "Automatically download the cover, if available" msgstr "自動下載封面,如果有的話" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:198 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "限制最大同時工作不超過的 CPU 數目" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:200 msgid "" "The layout of the user interface. Wide has the book details panel on the " "right and narrow has it at the bottom." msgstr "使用者介面的配置。寬模式會把書籍詳細資料窗格放在右側而窄模式會把它放在底部。" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:204 msgid "Show the average rating per item indication in the tag browser" msgstr "在標籤瀏覽器中顯示每個項目的平均評等指示" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:206 msgid "Disable UI animations" msgstr "停用 UI 動畫" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:211 msgid "tag browser categories not to display" msgstr "標籤瀏覽器不顯示的分類" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:265 msgid "WARNING:" -msgstr "" +msgstr "警告:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:275 msgid "ERROR:" -msgstr "" +msgstr "錯誤:" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:287 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/ui.py:258 msgid "Show this confirmation again" -msgstr "" +msgstr "再次顯示這個確認" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:536 msgid "Choose Files" msgstr "選擇檔案" @@ -4594,18 +4607,18 @@ msgid "Shift+A" msgstr "Shift+A" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:74 -msgid "Configure the adding of books" -msgstr "" +msgid "Control the adding of books" +msgstr "控制書籍的加入" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:95 #: /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:89 +#: /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/edit_metadata.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:279 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:91 msgid "No books selected" msgstr "尚未選取書籍" @@ -4615,7 +4628,7 @@ msgid "Cannot add files as no books are selected" msgstr "沒有選擇書籍就不能加入檔案" #: /home/kovid/work/calibre/src/calibre/gui2/actions/add.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 msgid "Are you sure" msgstr "您確定" @@ -4758,6 +4771,10 @@ msgstr "並未選擇書籍來產生型錄" msgid "Generating %s catalog..." msgstr "正在產生 %s 分類.." +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:71 +msgid "Catalog generation complete, with warnings." +msgstr "分類產生完成,有警告訊息。" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:86 msgid "Catalog generated." msgstr "分類已產生。" @@ -4819,7 +4836,7 @@ msgstr "切換/建立書庫..." #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/toolbar.py:58 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:171 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d books" msgstr "%d 本書" @@ -4878,7 +4895,7 @@ msgstr "注意實際的書庫資料夾會被重新命名。" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:283 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:726 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:308 msgid "Already exists" msgstr "已經存在" @@ -4981,7 +4998,7 @@ msgstr "資料庫完整性檢查失敗,請按顯示詳細資料以取得更多 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:389 msgid "Starting library scan, this may take a while" -msgstr "" +msgstr "開始掃描書庫,這會花上一段時間" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:395 msgid "No problems found" @@ -4995,7 +5012,7 @@ msgstr "您書庫中的檔案符合資料庫中的資訊。" #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:479 #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/actions/save_to_disk.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:945 msgid "Not allowed" msgstr "不允許的" @@ -5029,26 +5046,26 @@ msgstr "大量轉換" msgid "Create a catalog of the books in your calibre library" msgstr "在您的 calibre 書庫中建立書籍的分類" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:614 msgid "Cannot convert" msgstr "不能轉換" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:135 #, python-format msgid "Starting conversion of %d book(s)" msgstr "正在開始 %d 本書的轉換" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:199 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/add.py:385 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" -msgstr "" +msgstr "%(title)s / %(author)s" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:131 msgid "Copy to library" @@ -5091,14 +5108,14 @@ msgstr "已複製 %(num)d 本書到 %(loc)s" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:205 msgid "Auto merged" -msgstr "" +msgstr "自動合併" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:206 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 "" +msgstr "有些書籍會自動合併到目標書庫現有的紀錄中。點選顯示詳細資料以查看是哪些書。這個行為是由偏好設定->加入書籍中的自動合併選項控制的。" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:225 msgid "" @@ -5112,9 +5129,9 @@ msgstr "當使用環境變數 CALIBRE_OVERRIDE_DATABASE_PATH 時您不能使用 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/restore_library.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:606 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:102 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:298 @@ -5324,98 +5341,98 @@ msgstr "管理藏書" msgid "Manage the collections on this device" msgstr "管理這個裝置上的藏書" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "E" msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:25 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:26 msgid "Edit metadata" msgstr "編輯元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:33 msgid "Edit metadata individually" msgstr "個別編輯元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:36 msgid "Edit metadata in bulk" msgstr "大量編輯元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:39 msgid "Download metadata and covers" msgstr "下載元數據和封面" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:46 msgid "Merge into first selected book - delete others" msgstr "合併到第一個選取的書籍 - 刪除其他的" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:49 msgid "Merge into first selected book - keep others" msgstr "合併到第一個選取的書籍 - 保留其他的" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:53 msgid "Merge only formats into first selected book - delete others" msgstr "只合併格式到第一個選取的書籍 - 刪除其他的" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 msgid "Merge book records" msgstr "合併書籍紀錄" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:59 msgid "M" msgstr "M" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:74 msgid "Cannot download metadata" msgstr "不能下載元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:84 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 msgid "Failed to download metadata" msgstr "無法下載元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:487 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:750 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:507 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:818 msgid "Download failed" msgstr "下載失敗" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:102 #, python-format msgid "Failed to download metadata or covers for any of the %d book(s)." msgstr "無法下載 %d 本書中任何的元數據或封面。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:105 msgid "Metadata download completed" msgstr "元數據下載已完成" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:107 #, python-format msgid "" "Finished downloading metadata for <b>%d book(s)</b>. Proceed with updating " "the metadata in your library?" msgstr "已完成 <b>%d 本書</b>的元數據下載。要接著更新您書庫中的元數據嗎?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:114 #, python-format msgid "" "Could not download metadata and/or covers for %d of the books. Click \"Show " "details\" to see which books." msgstr "無法下載書籍中 %d 的元數據和/或封面。點選「顯示詳細資料」以查看是哪一本書。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 msgid "Download complete" msgstr "下載完成" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:880 msgid "Download log" msgstr "下載紀錄" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:147 msgid "Some books changed" msgstr "有些書籍已改變" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:148 msgid "" "The metadata for some books in your library has changed since you started " "the download. If you proceed, some of those changes may be overwritten. " @@ -5423,27 +5440,27 @@ msgid "" "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:241 msgid "Cannot edit metadata" msgstr "不能編輯元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:281 msgid "Cannot merge books" msgstr "不能合併書籍" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:282 msgid "At least two books must be selected for merging" msgstr "合併至少要選擇兩本書" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:266 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:285 msgid "" "You are about to merge more than 5 books. Are you <b>sure</b> you want to " "proceed?" msgstr "您將要合併 5 本以上書籍。您<b>確定</b>要繼續?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:294 #, python-format msgid "" "Book formats and metadata from the selected books will be added to the " @@ -5454,7 +5471,7 @@ msgstr "" "選取書籍的書籍格式與元數據會加入到<b>第一本選取的書籍</b> (%s)。ISBN " "將<i>不會</i>被合併。<br><br>第二本及以後選取的書籍不會被刪除或變更。<br><br>請確認您想要繼續。" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:287 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:306 #, python-format msgid "" "Book formats from the selected books will be merged into the <b>first " @@ -5471,7 +5488,7 @@ msgstr "" "<br>第一本選取書籍的所有格式都會被保留,而第二本以後選取的書籍中任何重複的格式都會被永遠自您的 calibre " "書庫<b>刪除</b>。<br><br>您<b>確定</b>要繼續嗎?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:322 #, python-format msgid "" "Book formats and metadata from the selected books will be merged into the " @@ -5486,15 +5503,15 @@ msgstr "" "將<i>不會</i>被合併。<br><br>在合併之後,第二本以後選取的書籍都會被<b>刪除</b>。<br><br>第一本選取書籍的所有格式都會被保留," "而第二本以後選取的書籍中任何重複的格式都會被永遠自您的 calibre 書庫<b>刪除</b>。<br><br>您<b>確定</b>要繼續嗎?" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:497 msgid "Applying changed metadata" msgstr "套用變更後的元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:586 msgid "Some failures" msgstr "某些錯誤" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:587 msgid "" "Failed to apply updated metadata for some books in your library. Click " "\"Show Details\" to see details." @@ -5824,7 +5841,7 @@ msgstr "調整書籍" #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:19 msgid "Make small changes to ePub or HTMLZ format books" -msgstr "" +msgstr "對 ePub 或 HTMLZ 格式電子書做小幅改變" #: /home/kovid/work/calibre/src/calibre/gui2/actions/tweak_epub.py:20 msgid "T" @@ -5841,6 +5858,9 @@ msgid "" "\n" "First convert the book to ePub or HTMLZ." msgstr "" +"要調整的電子書必須是 ePub 或 HTMLZ 格式。\n" +"\n" +"首先請將電子書轉換為 ePub 或 HTMLZ。" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:37 msgid "V" @@ -5878,7 +5898,7 @@ msgid "Selected books have no formats" msgstr "選取的書籍沒有格式" #: /home/kovid/work/calibre/src/calibre/gui2/actions/view.py:153 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:138 msgid "Choose the format to view" msgstr "選擇要檢視的格式" @@ -5970,12 +5990,12 @@ msgid "" msgstr "加入書籍的程序似乎停住了。請試著重新啟動 calibre 並以較少資料量的方式加入書籍,直到您找到出問題的那本書。" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 msgid "Duplicates found!" msgstr "發現重複項目!" #: /home/kovid/work/calibre/src/calibre/gui2/add.py:388 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:224 msgid "" "Books with the same title as the following already exist in the database. " "Add them anyway?" @@ -6107,7 +6127,7 @@ msgstr "這個資料夾和它的子資料夾都會被掃描以將書籍匯入 ca #: /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/preferences/adding_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:166 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:167 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:89 @@ -6150,10 +6170,10 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "每個資料夾有多本書,在資料夾中的每個電子書檔案都是不同書籍(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" -msgstr "" +msgstr "從 %(src)s 自動加入 %(num)d 本書" #: /home/kovid/work/calibre/src/calibre/gui2/bars.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/plugin_updater.py:302 @@ -6175,7 +6195,7 @@ msgid "Book %(sidx)s of <span class=\"series_name\">%(series)s</span>" msgstr "<span class=\"series_name\">%(series)s</span> 的書籍 %(sidx)s" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1069 msgid "Collections" msgstr "藏書" @@ -6193,17 +6213,17 @@ msgstr "複製封面" msgid "Remove Cover" msgstr "移除封面" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 msgid "Double-click to open Book Details window" msgstr "雙擊開啟書籍詳細資料視窗" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:359 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:295 msgid "Path" msgstr "路徑" -#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:361 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 #, python-format msgid "Cover size: %(width)d x %(height)d" @@ -6277,7 +6297,7 @@ msgstr "輸出" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:110 #: /home/kovid/work/calibre/src/calibre/gui2/convert/snb_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 @@ -6288,7 +6308,7 @@ msgstr "輸出" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:40 #: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/behavior_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns_ui.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/conversion_ui.py:54 @@ -6710,14 +6730,14 @@ msgstr "對於不能在這個對話盒指定的設定值,會使用在前一次 #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:61 msgid "None of the selected books have saved conversion settings." -msgstr "" +msgstr "選取的書籍都沒有已儲存的轉換設定值。" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:81 msgid "Bulk Convert" msgstr "大量轉換" #: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:197 msgid "Options specific to the output format." msgstr "指定輸出格式的選項。" @@ -7171,7 +7191,7 @@ msgstr "表格直線化(&L)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:166 msgid "Select what style information you want completely removed:" -msgstr "" +msgstr "選擇您想要完全移除的樣式資訊:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:171 msgid "Removes the font-family CSS property" @@ -7179,7 +7199,7 @@ msgstr "移除 font-family CSS 屬性" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:172 msgid "&Fonts" -msgstr "" +msgstr "字型(&F)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:176 msgid "" @@ -7189,7 +7209,7 @@ msgstr "移除邊界 CSS 屬性。注意頁面邊界不會被這個設定值影 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:177 msgid "&Margins" -msgstr "" +msgstr "邊界(&M)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:181 msgid "Removes the padding CSS properties" @@ -7197,23 +7217,23 @@ msgstr "移除墊充 CSS 屬性" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:182 msgid "&Padding" -msgstr "" +msgstr "補白(&P)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:186 msgid "Convert floating images/text into static images/text" -msgstr "" +msgstr "將浮動影像/文字轉換為固定影像/文字" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:187 msgid "F&loats" -msgstr "" +msgstr "浮動(&L)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:191 msgid "Removes foreground and background colors" -msgstr "" +msgstr "移除前景與背景顏色" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:192 msgid "&Colors" -msgstr "" +msgstr "顏色(&C)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:198 msgid "&Other CSS Properties:" @@ -7231,7 +7251,7 @@ msgstr "額外的 CSS (&E)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:228 msgid "&Filter Style Information" -msgstr "" +msgstr "過濾器樣式資訊(&F)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19 msgid "LRF Output" @@ -7286,7 +7306,7 @@ msgid "&Monospaced font family:" msgstr "等寬字型族系(&M):" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:47 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:200 msgid "Metadata" msgstr "元數據" @@ -7297,33 +7317,44 @@ msgid "" "possible." msgstr "設定元數據。輸出檔案會儘可能包含這個元數據。" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 +msgid "This book has no cover" +msgstr "這本書沒有封面" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 +#, python-format +msgid "Cover size: %(width)d x %(height)d pixels" +msgstr "封面尺寸:%(width)d x %(height)d 像素" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:916 msgid "Choose cover for " msgstr "選擇封面給 " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:924 msgid "Cannot read" msgstr "不能讀取" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:925 msgid "You do not have permission to read the file: " msgstr "您沒有權限可讀取這個檔案: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:196 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:933 msgid "Error reading file" msgstr "讀取檔案時發生錯誤" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:934 msgid "<p>There was an error reading from file: <br /><b>" msgstr "<p>讀取檔案時發生錯誤: <br /><b>" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:944 msgid " is not a valid picture" msgstr " 不是有效的照片" @@ -7387,7 +7418,7 @@ msgstr "用來分類書籍的標籤。這在搜尋時特別有用。<br><br>這 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:567 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:458 msgid "&Series:" msgstr "系列(&S):" @@ -7424,7 +7455,7 @@ msgstr "啟用透過 Facebook 分享書籍內容等。警告:會停用上次 #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:78 msgid "Put generated Table of Contents at &start of book instead of end" -msgstr "" +msgstr "將產生的目錄置於書籍開頭而非結尾處(&S)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:79 msgid "Ignore &margins" @@ -7450,7 +7481,7 @@ msgstr "不要在書籍中加入目錄頁" msgid "" "Do not convert all images to &JPEG (may result in images not working in " "older viewers)" -msgstr "" +msgstr "不要將所有影像轉換為 &JPEG (可能會讓部分影像無法在舊檢視器中顯示)" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup.py:35 msgid "Page Setup" @@ -7563,23 +7594,33 @@ msgstr "不要減少圖片大小與顏色深度" msgid "RB Output" msgstr "RB 輸出" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:146 msgid "No formats available" msgstr "沒有可用的格式" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:147 msgid "Cannot build regex using the GUI builder without a book." msgstr "不能在沒有開啟書籍下使用 GUI 建立程式來建立正規表示式。" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:156 msgid "Could not open file" msgstr "無法開啟檔案" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:157 msgid "Could not open the file, do you have it open in another program?" msgstr "無法開啟檔案,您是否已在其他程式開啟它?" #: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:175 +msgid "" +"Failed to generate markup for testing. Click \"Show Details\" to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:181 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:185 +msgid "Failed to generate preview" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:191 msgid "Open book" msgstr "開啟書籍" @@ -7631,7 +7672,7 @@ msgstr "下一本(&N)" msgid "Preview" msgstr "預覽" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:15 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:19 msgid "" "Search\n" "&\n" @@ -7641,57 +7682,136 @@ msgstr "" "&\n" "取代" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:43 msgid "&Search Regular Expression" msgstr "搜尋正規表示式(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Replacement Text" +msgstr "取代文字" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:56 +msgid "Search Regular Expression" +msgstr "搜尋正規表示式" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:100 +msgid "Load Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:119 +msgid "Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:110 +msgid "Failed to read" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:111 +#, python-format +msgid "Failed to load patterns from %s, click Show details to learn more." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:117 +msgid "Save Calibre Search-Replace definitions file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:168 +msgid "Unused Search & Replace definition" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:169 +msgid "" +"The search / replace definition being edited has not been added to the list " +"of definitions. Do you wish to continue with the conversion (the definition " +"will not be used)?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:180 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:112 msgid "Invalid regular expression" msgstr "不正確的正規表示式" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:113 #, python-format msgid "Invalid regular expression: %s" msgstr "不正確的正規表示式:%s" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:148 -msgid "First expression" -msgstr "第一表示式" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace.py:265 +msgid "" +"The list of search/replace definitions that will be applied to this " +"conversion." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:111 +msgid "Search/Replace Definition Edit" +msgstr "搜尋/取代定義編輯" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:112 msgid "&Replacement Text" msgstr "取代文字(&R)" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:150 -msgid "Second Expression" -msgstr "第二表示式" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:113 +msgid "" +"Add the current expression to the list of expressions that will be applied" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:152 -msgid "Third expression" -msgstr "第三表示式" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:114 +msgid "&Add" +msgstr "加入(&A)" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:115 +msgid "Edit the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 +msgid "&Change" +msgstr "變更(&C)" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:117 +msgid "Remove the currently selected expression" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 +msgid "&Remove" +msgstr "移除(&R)" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:119 +msgid "Load a list of expressions from a previously saved file" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:120 +msgid "&Load" +msgstr "載入(&L)" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:121 +msgid "Save this list of expressions so that you can re-use it easily" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 +#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "&Save" +msgstr "儲存(&S)" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:123 msgid "" "<p>Search and replace uses <i>regular expressions</i>. See the <a " "href=\"http://manual.calibre-ebook.com/regexp.html\">regular expressions " "tutorial</a> to get started with regular expressions. Also clicking the " -"wizard buttons below will allow you to test your regular expression against " -"the current input document." +"wizard button below will allow you to test your regular expression against " +"the current input document. When you are happy with an expression, click the " +"Add button to add it to the list of expressions." msgstr "" -"<p>使用<i>正規表示式</i>來搜尋與取代。請查閱<a href=\"http://manual.calibre-" -"ebook.com/regexp.html\">正規表示式教學</a>來了解正規表示式。同時在下方的精靈按鈕可以讓您以目前輸入的文件測試您的正規表示式。" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:173 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:181 msgid "Convert" msgstr "轉換" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:208 msgid "Options specific to the input format." msgstr "用來指定輸入格式的選項。" @@ -7785,6 +7905,8 @@ msgid "" "to use these options. Leave the replace field blank and enter your " "header/footer removal regexps into the search field." msgstr "" +"頁首及頁尾移除選項已被搜尋 & 取代選擇替換了。請在左邊的工具列中點選搜尋 & " +"取代分類來使用這些選項。將取代欄位保持空白並在搜尋欄位中輸入您的頁首/頁尾移除正規表示式即可。" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64 msgid "Remove &fake margins" @@ -8025,11 +8147,11 @@ msgstr "" "則會比對任何標籤。</p><p>要學習更多關於 XPath 的進階用法,請查閱 <a href=\"http://manual.calibre-" "ebook.com/xpath.html\">XPath Tutorial</a>。" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:149 msgid "Browse by covers" msgstr "依封面瀏覽" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:221 msgid "Cover browser could not be loaded" msgstr "無法載入封面瀏覽器" @@ -8077,17 +8199,17 @@ msgstr "清除「%s」" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:241 msgid "Open Item Editor" -msgstr "" +msgstr "開啟項目編輯器" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:353 msgid "Values changed" -msgstr "" +msgstr "數值已變更" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:354 msgid "" "You have changed the values. In order to use this editor, you must either " "discard or apply these changes. Apply changes?" -msgstr "" +msgstr "您已經改變數值。為了使用這個編輯器,您必項放棄或套用這些變更。要套用變更嗎?" #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:379 msgid " index:" @@ -8235,25 +8357,25 @@ msgstr "選擇資料夾開啟為裝置" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:725 msgid "Running jobs" -msgstr "" +msgstr "執行中工作" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:726 msgid "Cannot configure the device while there are running device jobs." -msgstr "" +msgstr "還有裝置工作在執行時不能設定裝置。" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:731 #, python-format msgid "Configure %s" -msgstr "" +msgstr "設定 %s" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:742 msgid "Disconnect device" -msgstr "" +msgstr "裝置斷線" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:743 #, python-format msgid "Disconnect and re-connect the %s for your changes to be applied." -msgstr "" +msgstr "將 %s 拔除後重新連接以讓您的變更生效。" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:783 msgid "Error talking to device" @@ -8409,7 +8531,7 @@ msgstr "重設作者為不明" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn.py:72 msgid "Some invalid ISBNs" -msgstr "" +msgstr "部分無效的 ISBN" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn.py:73 msgid "" @@ -8419,11 +8541,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn.py:79 msgid "All invalid ISBNs" -msgstr "" +msgstr "所有無效的 ISBN" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn.py:80 msgid "All the ISBNs you entered were invalid. No books can be added." -msgstr "" +msgstr "您輸入的所有 ISBN 都無效。沒有書籍能加入。" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_from_isbn_ui.py:63 msgid "Add books by ISBN" @@ -8462,7 +8584,7 @@ msgid "My Books" msgstr "我的書籍" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:328 msgid "Generate catalog" msgstr "產生分類" @@ -8639,7 +8761,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:89 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:257 msgid "Name" msgstr "名稱" @@ -8769,7 +8891,7 @@ msgstr "將「%s」加入工具列或選單" msgid "Select the toolbars and/or menus to add <b>%s</b> to:" msgstr "選擇工具列和/或選單以加入 <b>%s</b> :" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_plugin_toolbars.py:48 msgid "" "You can also customise the plugin locations using <b>Preferences -> " "Customise the toolbar</b>" @@ -8785,7 +8907,7 @@ msgid "Set options for converting %s" msgstr "設定轉換 %s 的選項" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:195 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:75 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:117 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:181 @@ -8826,7 +8948,7 @@ msgstr "您想要從哪裡刪除?" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_location_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:73 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:233 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:236 msgid "Library" msgstr "書庫" @@ -8859,11 +8981,11 @@ msgstr "位置" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1066 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 #: /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 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Date" msgstr "日期" @@ -8878,13 +9000,13 @@ msgstr "%(curr)s (原本是 %(initial)s)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:86 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:888 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:897 msgid "Item is blank" msgstr "項目是空的" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/device_category_editor.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:187 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:889 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:898 msgid "An item cannot be set to nothing. Delete it instead." msgstr "項目不能設為沒有。請刪除它來代替。" @@ -8968,8 +9090,8 @@ msgstr "連結" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:122 #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:496 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:624 msgid "No matches found" msgstr "未發現符合項目" @@ -9016,17 +9138,17 @@ msgid "Copy to author" msgstr "複製到作者" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:313 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:938 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:947 msgid "Invalid author name" msgstr "無效的作者姓名" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog.py:314 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:939 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:948 msgid "Author names cannot contain & characters." msgstr "作者姓名不能包含 & 字元。" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/edit_authors_dialog_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 msgid "Manage authors" msgstr "管理作者" @@ -9082,15 +9204,15 @@ msgstr "使用中的工作" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:33 msgid "Find next match" -msgstr "" +msgstr "找下一個符合項" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:34 msgid "&Search" -msgstr "" +msgstr "搜尋(&S)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:38 msgid "Find previous match" -msgstr "" +msgstr "找上一個符合項" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:54 msgid "&Stop selected jobs" @@ -9098,7 +9220,7 @@ msgstr "停止選取的工作(&S)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:58 msgid "&Hide selected jobs" -msgstr "" +msgstr "隱藏選取的工作(&H)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:62 msgid "Show job &details" @@ -9106,7 +9228,7 @@ msgstr "顯示工作詳細資料(&D)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:66 msgid "Show &all jobs" -msgstr "" +msgstr "顯示所有的工作(&A)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:70 msgid "Stop &all non device jobs" @@ -9114,44 +9236,50 @@ msgstr "停止所有非裝置工作(&A)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:74 msgid "&Hide all jobs" -msgstr "" +msgstr "隱藏所有的工作(&H)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:282 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:51 msgid "&Copy to clipboard" msgstr "複製到剪貼簿(&C)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:54 msgid "Show &details" msgstr "顯示詳細資料(&D)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:55 msgid "Hide &details" msgstr "隱藏詳細資料(&D)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:304 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:59 msgid "Show detailed information about this error" msgstr "顯示關於這個錯誤的詳細資料" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:103 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:78 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:588 msgid "Copied" msgstr "已複製" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:873 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:205 msgid "Copy to clipboard" msgstr "複製到剪貼簿" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:869 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:975 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:937 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1043 +#: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "檢視記錄" @@ -9164,7 +9292,7 @@ msgid "Standard metadata" msgstr "標準元數據" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:915 msgid "Custom metadata" msgstr "自訂元數據" @@ -9349,7 +9477,7 @@ msgstr "加入標籤(&G): " #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:561 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:562 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:192 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:191 msgid "Open Tag Editor" msgstr "開啟標籤編輯器" @@ -9503,13 +9631,13 @@ msgid "Set from &ebook file(s)" msgstr "從電子書檔案設定(&E)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:608 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:721 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:720 msgid "&Basic metadata" msgstr "基本元數據(&B)" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:609 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:561 msgid "&Custom metadata" msgstr "自訂元數據(&C)" @@ -9685,7 +9813,7 @@ msgstr "需要密碼" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:133 msgid "&Username:" msgstr "使用者名稱(&U):" @@ -9699,7 +9827,7 @@ msgstr "密碼(&P):" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:65 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:81 msgid "&Show password" msgstr "顯示密碼(&S)" @@ -10252,62 +10380,62 @@ msgstr "需要使用者名稱和密碼" msgid "You must provide a username and/or password to use this news source." msgstr "要使用這個新聞來源您必須提供使用者名稱和/或密碼。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 msgid "Account" msgstr "帳號" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:358 msgid "(optional)" msgstr "(選擇性的)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:359 msgid "(required)" msgstr "(必要的)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:376 msgid "Created by: " msgstr "建立者: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:380 #, python-format msgid "Download %s now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:384 msgid "Last downloaded: never" msgstr "上次下載:從未" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:385 msgid "never" msgstr "永不" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:391 #, python-format msgid "%(days)d days, %(hours)d hours and %(mins)d minutes ago" msgstr "%(days)d 天 %(hours)d 小時 %(mins)d 分鐘之前" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:407 msgid "Last downloaded:" msgstr "上次下載:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:428 msgid "Cannot download news as no internet connection is active" msgstr "由於沒有網際網路連線可用所以無法下載新聞" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:429 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:431 msgid "No internet connection" msgstr "沒有網路連接" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:442 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Schedule news download" msgstr "排程新聞下載" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:445 msgid "Add a custom news source" msgstr "加入自訂新聞來源" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:448 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:450 msgid "Download all scheduled news sources" msgstr "下載所有已排程的新來源" @@ -10436,35 +10564,35 @@ msgstr "<p>反轉這次比對。亦即,只會傳回 <b>不</b> 符合這次查 msgid "Negate" msgstr "反相" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:206 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:168 msgid "Advanced Search" msgstr "進階搜尋" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:183 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:207 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:169 msgid "&What kind of match to use:" msgstr "要使用哪一種比對(&W):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:208 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:34 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:170 msgid "Contains: the word or phrase matches anywhere in the metadata field" msgstr "包含:在元數據欄位中任何符合字或詞的地方" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:185 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:209 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:36 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:171 msgid "Equals: the word or phrase must match the entire metadata field" msgstr "等同:字或詞必須符合整個元數據欄位" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:186 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:210 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:38 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:172 @@ -10472,49 +10600,49 @@ msgid "" "Regular expression: the expression must match anywhere in the metadata field" msgstr "正規表示式:在元數據欄位中任何符合正規表示式的地方" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:211 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:173 msgid "Find entries that have..." msgstr "尋找的項目含有..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:188 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:174 msgid "&All these words:" msgstr "所有這些字詞(&A):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:189 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:64 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:175 msgid "This exact &phrase:" msgstr "完全符合的語詞(&P):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:190 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:214 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:74 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:176 msgid "&One or more of these words:" msgstr "一或多個字詞(&O):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:191 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:215 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:83 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:177 msgid "But dont show entries that have..." msgstr "但是不要顯示項目含有..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:192 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:90 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:178 msgid "Any of these &unwanted words:" msgstr "任何這些不需要的字詞(&U):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:209 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:217 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:99 msgid "" @@ -10524,45 +10652,45 @@ msgstr "" "請查閱 <a href=\"http://manual.calibre-ebook.com/gui.html#the-search-" "interface\">使用者手冊</a> 取得更多協助" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:194 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:218 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:234 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:180 msgid "A&dvanced Search" msgstr "進階搜尋(&D)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:196 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:220 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:121 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:182 msgid "Enter the title." msgstr "請輸入書名。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:197 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:183 msgid "&Author:" msgstr "作者(&A):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:199 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1106 msgid "Ta&gs:" msgstr "標籤(&G):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:200 msgid "Enter an author's name. Only one author can be used." msgstr "輸入作者的名稱。只能使用一位作者。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:201 msgid "" "Enter a series name, without an index. Only one series name can be used." msgstr "輸入系列名稱,不含索引。只能使用一個系列名稱。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:202 msgid "Enter tags separated by spaces" msgstr "輸入以空白分隔的標籤" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:203 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/template_functions_ui.py:101 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:223 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:135 @@ -10570,14 +10698,14 @@ msgstr "輸入以空白分隔的標籤" msgid "&Clear" msgstr "清除(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:204 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/adv_search_builder_ui.py:224 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/adv_search_builder_ui.py:146 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/adv_search_builder_ui.py:185 msgid "Search only in specific fields:" msgstr "只搜尋指定的欄位:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:205 msgid "Titl&e/Author/Series ..." msgstr "書名/作者/系列(&E)..." @@ -10651,7 +10779,7 @@ msgstr "加入新的分類" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:174 msgid "Rename the current category to what is in the box" -msgstr "" +msgstr "重新命名目前的分類" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:176 msgid "Category filter: " @@ -10878,90 +11006,98 @@ msgstr "" msgid "&Preview {0}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:112 +msgid "No recipes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:113 +msgid "No custom recipes created." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:144 msgid "No recipe selected" msgstr "尚未選取食譜" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 #, python-format msgid "The attached file: %(fname)s is a recipe to download %(title)s." msgstr "附加的檔案:%(fname)s 是用來下載 %(title)s 的食譜。" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:149 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:152 msgid "Recipe for " msgstr "食譜: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:177 +#: /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 msgid "Switch to Advanced mode" msgstr "切換至進階模式" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:183 msgid "Switch to Basic mode" msgstr "切換至基礎模式" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:193 msgid "Feed must have a title" msgstr "餵送必須有標題" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:194 msgid "The feed must have a title" msgstr "餵送必須要有標題" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:198 msgid "Feed must have a URL" msgstr "餵送必須有 URL" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:199 #, python-format msgid "The feed %s must have a URL" msgstr "餵送 %s 必須有 URL" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:205 msgid "This feed has already been added to the recipe" msgstr "這個餵送已加入食譜" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:244 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:253 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:343 msgid "Invalid input" msgstr "無效的輸入" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:245 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:341 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 #, python-format msgid "<p>Could not create recipe. Error:<br>%s" msgstr "<p>無法建立食譜。錯誤:<br>%s" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:258 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:317 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:347 msgid "Replace recipe?" msgstr "是否取代食譜?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:259 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:318 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:348 #, python-format msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "名為 %s 的自訂食譜已存在。您想要取代它嗎?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:288 msgid "Choose builtin recipe" msgstr "選擇內建的食譜" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:331 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:334 msgid "Choose a recipe file" msgstr "選擇食譜檔案" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:332 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:335 msgid "Recipes" msgstr "食譜" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:375 msgid "" "You will lose any unsaved changes. To save your changes, click the " "Add/Update recipe button. Continue?" @@ -11366,42 +11502,42 @@ msgstr "這些工作有些不能停止。點選顯示詳細資料以查看無法 msgid "Unavailable" msgstr "無法使用" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:441 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:442 msgid "Jobs:" msgstr "工作:" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:443 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:444 msgid "Shift+Alt+J" msgstr "Shift+Alt+J" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:460 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:461 msgid "Click to see list of jobs" msgstr "點選以查看工作清單" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:534 msgid " - Jobs" msgstr " - 工作" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:546 msgid "Search for a job by name" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:594 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:616 -msgid "No job" -msgstr "沒有工作" +msgstr "依名稱搜尋工作" #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:595 #: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:617 +msgid "No job" +msgstr "沒有工作" + +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:596 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:618 msgid "No job selected" msgstr "沒有選取工作" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:597 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:598 msgid "Do you really want to stop the selected job?" msgid_plural "Do you really want to stop all the selected jobs?" msgstr[0] "您確定要停止選取的工作?" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:608 msgid "Do you really want to stop all non-device jobs?" msgstr "您確定要停止所有非裝置的工作?" @@ -11498,7 +11634,7 @@ msgstr "退出這個裝置" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:61 msgid "Configure this device" -msgstr "" +msgstr "設定這個裝置" #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:74 msgid "Show books in calibre library" @@ -11578,52 +11714,52 @@ msgstr "大小 (MB)" msgid "Modified" msgstr "已修改" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:785 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:786 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1398 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:312 msgid "The lookup/search name is \"{0}\"" msgstr "尋找/搜尋的名稱是「{0}」" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:791 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1399 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:792 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 msgid "This book's UUID is \"{0}\"" msgstr "這本書的 UUID 為「{0}」" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:874 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:103 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:439 msgid "Permission denied" msgstr "權限不足" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:875 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:876 msgid "" "Could not change the on disk location of this book. Is it open in another " "program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:881 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:882 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:883 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1063 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1064 msgid "In Library" msgstr "於書庫" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1067 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "大小" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1379 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1380 msgid "Marked for deletion" msgstr "標記成要刪除" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1383 msgid "Double click to <b>edit</b> me<br><br>" msgstr "請雙擊以<b>編輯</b>我<br><br>" @@ -11674,7 +11810,7 @@ msgstr "如果欄太寬無法符合則縮減它" msgid "Restore default layout" msgstr "還原預設的配置" -#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:946 msgid "" "Dropping onto a device is not supported. First add the book to the calibre " "library." @@ -11718,17 +11854,17 @@ msgid "LRF Viewer toolbar" msgstr "LRF 檢視器工具列" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:516 msgid "Next Page" msgstr "下一頁" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:517 msgid "Previous Page" msgstr "上一頁" #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/main_ui.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:866 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:934 #: /home/kovid/work/calibre/src/calibre/gui2/store/web_store_dialog_ui.py:62 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:193 msgid "Back" @@ -11826,7 +11962,7 @@ msgid "Bad database location %r. calibre will now quit." msgstr "錯誤的資料庫位置 %r。calibre 現在將會關閉。" #: /home/kovid/work/calibre/src/calibre/gui2/main.py:192 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:517 msgid "Corrupted database" msgstr "損壞的資料庫" @@ -11905,7 +12041,7 @@ msgstr "未處理的例外" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:451 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:440 #, python-format msgid "Could not open %s. Is it being used by another program?" msgstr "無法開啟 %s。它是否已被其他的程式開啟?" @@ -12032,10 +12168,6 @@ msgstr "瀏覽(&B)" msgid "T&rim" msgstr "修剪(&R)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:886 -msgid "&Remove" -msgstr "移除(&R)" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:892 msgid "Download co&ver" msgstr "下載封面(&V)" @@ -12064,15 +12196,6 @@ msgstr "無效的封面" msgid "Could not change cover as the image is invalid." msgstr "不能將封面改變為無效的圖片。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1015 -msgid "This book has no cover" -msgstr "這本書沒有封面" - -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1017 -#, python-format -msgid "Cover size: %(width)d x %(height)d pixels" -msgstr "封面尺寸:%(width)d x %(height)d 像素" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:1142 msgid "Tags changed" msgstr "標籤已變更" @@ -12147,92 +12270,92 @@ msgstr "清除日期" msgid "Publishe&d:" msgstr "出版日(&D):" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:55 msgid "Schedule download?" msgstr "是否排程下載?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 #, python-format msgid "" "The download of metadata for the <b>%d selected book(s)</b> will run in the " "background. Proceed?" msgstr "下載 <b>%d 本選取的書籍</b>會在背景中執行。要繼續嗎?" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:68 msgid "" "You can monitor the progress of the download by clicking the rotating " "spinner in the bottom right corner." msgstr "您可以點選右下角的在旋轉的轉輪來查看下載的程序。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:71 msgid "" "When the download completes you will be asked for confirmation before " "calibre applies the downloaded metadata." msgstr "下載完成後會先詢問您的確認才會讓 calibre 套用下載的元數據。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:82 msgid "Download only &metadata" msgstr "只下載元數據(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:86 msgid "Download only &covers" msgstr "只下載封面(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:90 msgid "&Configure download" msgstr "設定下載(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:94 msgid "Download &both" msgstr "兩者都下載(&B)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:131 #, python-format msgid "Download metadata for %d books" msgstr "下載 %d 本書的元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:136 msgid "Metadata download started" msgstr "元數據下載已開始" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:147 msgid "(Failed metadata)" msgstr "(失敗的元數據)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:149 msgid "(Failed cover)" msgstr "(失敗的封面)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/bulk_download.py:200 #, python-format -msgid "Downloaded %(num)d of %(tot)d" -msgstr "已下載 %(tot)d 中的 %(num)d" +msgid "Processed %s" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/config.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:61 msgid "Downloaded metadata fields" msgstr "已下載元數據欄位" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:31 msgid "Edit Metadata" msgstr "編輯元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:859 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:927 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:107 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 msgid "Next" msgstr "下一個" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:69 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:106 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:229 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:393 msgid "Previous" msgstr "上一個" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:118 msgid "" "Automatically create the title sort entry based on the current title entry.\n" "Using this button to create title sort will change title sort from red to " @@ -12241,7 +12364,7 @@ msgstr "" "自動以目前的書名項目建立書名排序。\n" "使用這個按鈕建立書名排序會將書名排序由紅色改為綠色。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:129 msgid "" "Automatically create the author sort entry based on the current author " "entry. Using this button to create author sort will change author sort from " @@ -12249,35 +12372,39 @@ msgid "" "Click and hold on the button to see it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:135 msgid "Set author sort from author" msgstr "從作者設定作者排序" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:136 msgid "Set author from author sort" msgstr "從作者排序設定作者" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:139 msgid "Copy author to author sort" msgstr "將作者複製到作者排序" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:141 msgid "Copy author sort to author" msgstr "將作者排序複製到作者" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:152 msgid "Swap the author and title" msgstr "交換作者和書名" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:158 msgid "" "Manage authors. Use to rename authors and correct individual author's sort " "values" msgstr "管理作者。用來更改作者姓名及修正每個作者排序的數值" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:166 -msgid "Remove unused series (Series that have no books)" -msgstr "移除未使用的系列(沒有任何書籍的系列)" +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:165 +msgid "Clear series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:200 +msgid "Clear Ids" +msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:204 msgid "" @@ -12302,66 +12429,66 @@ msgstr "改變 calibre 如何下載元數據" msgid " [%(num)d of %(tot)d]" msgstr " [%(num)d / %(tot)d]" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:337 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:333 msgid "Could not read cover" msgstr "無法讀取封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:327 #, python-format msgid "Could not read cover from %s format" msgstr "無法從 %s 格式讀取封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:334 #, python-format msgid "The cover in the %s format is invalid" msgstr "%s 格式中的封面是無效的" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:507 #, python-format msgid "Save changes and edit the metadata of %s" msgstr "儲存變更並編輯 %s 的元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:605 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:810 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:809 msgid "Change cover" msgstr "改變封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:664 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:663 msgid "Co&mments" msgstr "評論(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:704 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:851 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:703 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:850 msgid "&Metadata" msgstr "元數據(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:709 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:708 msgid "&Cover and formats" msgstr "封面與格式(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:778 msgid "C&ustom metadata" msgstr "自訂元數據(&U)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:791 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:790 msgid "&Comments" msgstr "評論(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:857 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:856 msgid "Basic metadata" msgstr "基本元數據" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has cover" msgstr "具有封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:139 msgid "Has summary" msgstr "具有摘要" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:193 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:196 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12369,27 +12496,27 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:281 msgid "See at" msgstr "查看:" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:435 msgid "calibre is downloading metadata from: " msgstr "calibre 正下載元數據於: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:457 msgid "Please wait" msgstr "請稍候" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:489 msgid "Query: " msgstr "查詢: " -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:508 msgid "Failed to download metadata. Click Show Details to see details" msgstr "無法下載元數據。點選顯示詳細資料來查看詳細資料" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:517 msgid "" "Failed to find any books that match your search. Try making the search " "<b>less specific</b>. For example, use only the author's last name and a " @@ -12398,38 +12525,38 @@ msgid "" msgstr "" "找不到任何符合您的搜尋的書籍。試著把搜尋條件<b>放寬</b>。例如,只使用作者的姓氐和書名中的單一個字詞。<p>要查看完整紀錄,請選點顯示詳細資料。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:625 msgid "Current cover" msgstr "目前的封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:628 msgid "Searching..." msgstr "搜尋中…" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:720 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:788 #, python-format msgid "Downloading covers for <b>%s</b>, please wait..." msgstr "正在下載 <b>%s</b> 的封面,請稍候..." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:751 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:819 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "無法下載任何封面,點選「顯示詳細資料」以查看詳細資料。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:757 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:825 #, python-format msgid "Could not find any covers for <b>%s</b>" msgstr "找不任何 <b>%s</b> 的封面" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:759 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:827 #, python-format msgid "Found <b>%(num)d</b> covers of %(title)s. Pick the one you like best." msgstr "找到 %(title)s 的 <b>%(num)d</b> 個封面。請挑一個您最喜歡的。" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:848 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:916 msgid "Downloading metadata..." msgstr "下載元數據..." -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:959 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1027 msgid "Downloading cover..." msgstr "正在下載封面..." @@ -12455,62 +12582,62 @@ msgstr "覆蓋現有的重複格式" msgid "Create new record for each duplicate format" msgstr "為每個重複格式建立新的紀錄" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:51 msgid "Choose a folder" -msgstr "" +msgstr "選擇資料夾" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 msgid "Invalid folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:110 #, python-format msgid "" "You must specify an existing folder as your auto-add folder. %s does not " "exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:116 #, python-format msgid "You do not have read/write permissions for the folder: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding.py:120 #, python-format msgid "" "<b>WARNING:</b> Any files you place in %s will be automatically deleted " "after being added to calibre. Are you sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "您可以在這裡控制 calibre 如何從加入的檔案中讀取元數據。calibre 可以從檔案的內容或檔案名稱中讀取資料。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 msgid "Read &metadata from file contents rather than file name" msgstr "從檔案內容而非檔案名稱讀取元數據(&M)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "交換作者的姓氏及名字順序。這只會影響從檔案名稱讀取的元數據。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:122 msgid "&Swap author firstname and lastname" msgstr "交換作者的姓氏及名字順序(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:123 msgid "" "When using the \"&Copy to library\" action to copy books between libraries, " "preserve the date" msgstr "當使用「複製到書庫(&C)」動作來在書庫之間複製書籍時,保留書的日期" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:124 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12523,11 +12650,11 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:129 msgid "&Automerge added books if they already exist in the calibre library:" msgstr "如果加入的書籍已存在 calibre 書庫中則自動會併(&A):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:130 msgid "" "Automerge: If books with similar titles and authors found, merge the " "incoming formats automatically into\n" @@ -12547,49 +12674,25 @@ msgid "" "Author matching is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 msgid "&Tags to apply when adding a book:" msgstr "加入書籍時要套用的標籤(&T):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 msgid "" "A comma-separated list of tags that will be applied to books added to the " "library" msgstr "要套用到加入這個書庫的書籍的標籤清單,以逗號分隔" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 msgid "&Configure metadata from file name" msgstr "從檔案名稱設定元數據(&C)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 msgid "The Add &Process" msgstr "加入程序(&P)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:141 -msgid "" -"Specify a folder. Any files you put into this folder will be automatically " -"added to calibre (restart required)." -msgstr "指定一個資料夾。您放到這個資料夾的所有檔案都會自動加入到 calibre (需要重新啟動)。" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:142 -msgid "" -"<b>WARNING:</b> Files in the above folder will be deleted after being added " -"to calibre." -msgstr "<b>警告:</b>上列資料夾中的檔案在加入 calibre 後都會被刪除。" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:143 -msgid "Ignore files with the following extensions when automatically adding " -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:144 -msgid "Folder to auto-add files from" -msgstr "要自動加入檔案的資料夾" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:145 -msgid "Browse for folder" -msgstr "瀏覽資料夾" - -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:147 msgid "" "If set, this option will causes calibre to check if a file\n" " being auto-added is already in the calibre library.\n" @@ -12601,11 +12704,39 @@ msgstr "" " 如果是,會彈出視窗詢問您是否要強制\n" " 加入它。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:148 msgid "Check for &duplicates when auto-adding files" msgstr "當自動加入檔案時檢查有無重複(&D)" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:149 +msgid "" +"Specify a folder. Any files you put into this folder will be automatically " +"added to calibre (restart required)." +msgstr "指定一個資料夾。您放到這個資料夾的所有檔案都會自動加入到 calibre (需要重新啟動)。" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:150 +msgid "" +"<b>WARNING:</b> Files in the above folder will be deleted after being added " +"to calibre." +msgstr "<b>警告:</b>上列資料夾中的檔案在加入 calibre 後都會被刪除。" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:151 +msgid "Ignore files with the following extensions when automatically adding " +msgstr "自動加入時忽略具有以下延伸檔名的檔案 " + #: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:152 +msgid "Folder to auto-add files from" +msgstr "要自動加入檔案的資料夾" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:153 +msgid "Browse for folder" +msgstr "瀏覽資料夾" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:155 +msgid "Automatically &convert added files to the current output format" +msgstr "自動將加入的檔案轉換為目前的輸出格式(&C)" + +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/adding_ui.py:156 msgid "&Automatic Adding" msgstr "自動加入(&A)" @@ -13484,6 +13615,7 @@ msgid "Never" msgstr "永不" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:493 msgid "By first letter" msgstr "依第一個字母" @@ -13502,7 +13634,7 @@ msgstr "欄位著色" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:182 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:273 msgid " or " msgstr " 或 " @@ -13756,6 +13888,7 @@ msgid "" "also set the cover priority. Covers from sources that have a higher " "(smaller) priority will be preferred when bulk downloading metadata.\n" msgstr "" +"您可以取消核取任何元數據來源以停用它們。您也可以設定封面的優先順序。來自較高(數字較小)優先順序來源的封面在大量下載元數據時會優先被使用。\n" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources_ui.py:48 msgid "" @@ -14090,7 +14223,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:113 msgid "Show only &user installed plugins" -msgstr "" +msgstr "只顯示使用者已安裝的外掛程式(&U)" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins_ui.py:117 msgid "Get &new plugins" @@ -14317,11 +14450,6 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:131 -#: /usr/src/qt-everywhere-opensource-src-4.8.0/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "&Save" -msgstr "儲存(&S)" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:132 msgid "Make &user categories from:" msgstr "製作使用者分類來源(&U):" @@ -14376,7 +14504,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:452 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:454 msgid "Failed to start content server" msgstr "啟動內容伺服器失敗" @@ -14397,81 +14525,79 @@ msgid "" "<p>If you leave the password blank, anyone will be able to\n" " access your book collection using the web interface.\n" "<br>\n" -"<p>Note that passwords do not work with Android devices. \n" -"Leave this blank if you intend to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, try removing the " +"password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:144 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "顯示封面的最大尺寸 (寬度x高度)。太大的封面會被調整大小。 " -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:145 msgid "Max. &cover size:" msgstr "最大封面尺寸(&C):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:146 msgid "Server &port:" msgstr "伺服器連接埠(&P):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:149 msgid "Max. &OPDS items per query:" msgstr "每次查詢最大 &OPDS 項目:" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:150 msgid "Max. OPDS &ungrouped items:" msgstr "最大 OPDS 未群組項目(&U):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:151 msgid "Restriction (saved search) to apply:" msgstr "要套用的限制(已儲存搜尋):" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:152 msgid "" "This restriction (based on a saved search) will restrict the books the " "content server makes available to those matching the search. This setting is " "per library (i.e. you can have a different restriction per library)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:153 msgid "" -"<p>Because of a bug in Google's Android, setting a password\n" -" will prevent the server from working with Android devices.\n" -"<br>\n" -"<p>Do not set a password if you plan to use the server with an\n" -" Android phone or tablet." +"<p>Some devices have browsers that do not support authentication. If you are " +"having trouble downloading files from the content server, trying removing " +"the password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 -msgid "Password incompatible with Android devices" -msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:154 +msgid "Password incompatible with some devices" +msgstr "密碼與部分裝置不相容" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:155 msgid "&URL Prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:156 msgid "" "A prefix that is applied to all URLs in the content server. Useful only if " "you plan to put the server behind another server like Apache, with a reverse " "proxy." msgstr "要附加到內容伺服器所有 URL 的前綴。只有在您計畫將伺服器放在其他伺服器如 Apache 後面使用反向代理伺服器時有用。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:157 msgid "&Start Server" msgstr "啟動伺服器(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:158 msgid "St&op Server" msgstr "停止伺服器(&O)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:159 msgid "&Test Server" msgstr "測試伺服器(&T)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:160 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " @@ -14479,15 +14605,15 @@ msgid "" msgstr "" "calibre 包含了一個網路伺服器,讓您可以在世界的任何地方使用瀏覽器存取您的書籍收藏。任何對這個設定值的改變都要在伺服器重新啟動後才會生效。" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Run server &automatically when calibre starts" msgstr "當 c&alibre 啟動時自動執行伺服器" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:162 msgid "View &server logs" msgstr "檢視伺服器紀錄檔(&S)" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:163 msgid "" "<p>Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -15330,27 +15456,27 @@ msgstr "改變許多書籍的元數據會花上一些時間。您確定嗎?" msgid "Searches" msgstr "搜尋" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:894 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:914 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:903 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:932 msgid "Rename user category" msgstr "重新命名使用者分類" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:895 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:904 msgid "You cannot use periods in the name when renaming user categories" msgstr "在重新命名使用者分類時不能在名稱使用句點" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:915 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:924 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:933 #, python-format msgid "The name %s is already used" msgstr "這個名稱 %s 已經使用了" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:952 msgid "Duplicate search name" msgstr "重複的搜尋名稱" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:953 #, python-format msgid "The saved search name %s is already used." msgstr "已儲存搜尋名稱 %s 已經使用了。" @@ -15606,6 +15732,14 @@ msgstr "顯示所有的分類" msgid "Change sub-categorization scheme" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:491 +msgid "Disable" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:495 +msgid "Partition" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:510 msgid "First letter is usable only when sorting by name" msgstr "第一個字母只用於依名稱排序時" @@ -15641,46 +15775,46 @@ msgstr "佇列中 " msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "轉換書籍 %(num)d / %(tot)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:274 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:268 msgid "Fetch news from " msgstr "取回新聞於 " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:341 msgid "Convert existing" msgstr "轉換現有的" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:342 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " "reconvert them?" msgstr "下列書籍已經被轉換為 %s 格式。您希望重新轉換它們嗎?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:203 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:205 msgid "&Donate to support calibre" msgstr "捐款支援 calibre (&D)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:239 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:241 msgid "&Restore" msgstr "還原(&R)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:246 msgid "&Eject connected device" msgstr "退出已連線的裝置(&E)" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 msgid "Quit calibre" msgstr "結束 calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:263 msgid "Clear the current search" msgstr "清除目前的搜尋" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 msgid "Debug mode" msgstr "除錯模式" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:366 #, python-format msgid "" "You have started calibre in debug mode. After you quit calibre, the debug " @@ -15688,11 +15822,11 @@ msgid "" "automatically." msgstr "您已經以除錯模式啟動 calibre。在您結束 calibre 後,除錯紀錄會儲存到檔案:%s<p>紀錄檔會自動顯示。" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:386 msgid "Failed to start Content Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:387 #, python-format msgid "" "Could not start the content server. Error:\n" @@ -15700,7 +15834,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:518 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15708,23 +15842,23 @@ msgid "" "successful." msgstr "位於 %s 的書庫資料庫似乎損壞了。您想要 calibre 自動試著重建它嗎?重建不一定能完全成功。" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:600 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:602 msgid "Conversion Error" msgstr "轉換時發生錯誤" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:625 msgid "Recipe Disabled" msgstr "食譜已停用" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:639 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:641 msgid "<b>Failed</b>" msgstr "<b>失敗</b>" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:675 msgid "There are active jobs. Are you sure you want to quit?" msgstr "還有使用中的工作。您確定要結束?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:676 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:678 msgid "" " is communicating with the device!<br>\n" " Quitting may cause corruption on the device.<br>\n" @@ -15734,11 +15868,11 @@ msgstr "" " 現在結束可能造成裝置上的損毀。<br>\n" " 您確定要結束?" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:680 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:682 msgid "Active jobs" msgstr "使用中工作" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:749 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:751 msgid "" "will keep running in the system tray. To close it, choose <b>Quit</b> in the " "context menu of the system tray." @@ -15796,27 +15930,27 @@ msgstr "有 %d 個外掛程式更新可用" msgid "Install and configure user plugins" msgstr "安裝並設定使用者外掛程式" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "Edit bookmark" msgstr "編輯書籤" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:44 msgid "New title for bookmark:" msgstr "書籤的新標題:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:53 msgid "Export Bookmarks" msgstr "匯出書籤" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:55 msgid "Saved Bookmarks (*.pickle)" msgstr "已儲存書籤 (*.pickle)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Import Bookmarks" msgstr "匯入書籤" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:62 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:63 msgid "Pickled Bookmarks (*.pickle)" msgstr "已儲存書籤 (*.pickle)" @@ -15897,7 +16031,7 @@ msgstr "等寬" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:198 msgid "Remember last used &window size and layout" -msgstr "" +msgstr "記住上次使用的視窗尺寸與配置(&W)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:199 msgid "Remember the ¤t page when quitting" @@ -15934,7 +16068,7 @@ msgid "Mouse &wheel flips pages" msgstr "滑鼠滾輪翻頁(&W)" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:51 msgid "" "Set the maximum width that the book's text and pictures will take when in " "fullscreen mode. This allows you to read the book text without it becoming " @@ -15943,11 +16077,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:210 msgid "Maximum text width in &fullscreen:" -msgstr "" +msgstr "全螢幕最大文字寬度(&F):" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:211 msgid "Font &magnification step size:" -msgstr "" +msgstr "字型逐步放大尺寸(&M):" #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:212 msgid "" @@ -15988,125 +16122,125 @@ msgstr "使用者樣式表(&S)" msgid "No results found for:" msgstr "找不到此項的結果:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:40 msgid "Options to customize the ebook viewer" msgstr "用來自訂電子書檢視器的選項" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:46 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:942 msgid "Remember last used window size" msgstr "記住上次使用的視窗大小" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:106 msgid "" "Set the user CSS stylesheet. This can be used to customize the look of all " "books." msgstr "設定使用者 CSS 樣式表。這可以用來自訂所有書籍的外觀。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 msgid "Resize images larger than the viewer window to fit inside it" msgstr "重新大於檢視器視窗的圖片大小以符合它" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:56 msgid "Hyphenate text" msgstr "連字符文字" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:58 msgid "Default language for hyphenation rules" msgstr "連字符規則的預設語言" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:60 msgid "Save the current position in the document, when quitting" msgstr "當結束時,儲存目前文件中的位置" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:62 msgid "Have the mouse wheel turn pages" msgstr "用滑鼠滾輪翻頁" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:64 msgid "" "The time, in seconds, for the page flip animation. Default is half a second." msgstr "翻頁動畫的時間,以秒計算。預設為半秒鐘。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:67 msgid "" "The amount by which to change the font size when clicking the font " "larger/smaller buttons. Should be a number between 0 and 1." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:71 msgid "Font options" msgstr "字型選項" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:72 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:73 msgid "The serif font family" msgstr "襯線字型族系" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:75 msgid "The sans-serif font family" msgstr "無襯線字型族系" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 msgid "The monospaced font family" msgstr "等寬字型族系" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 msgid "The standard font size in px" msgstr "標準字型大小(px)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:78 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 msgid "The monospaced font size in px" msgstr "等寬字型大小(px)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:80 msgid "The standard font type" msgstr "標準字型類型" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 msgid "Still editing" msgstr "繼續編輯" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:136 msgid "" "You are in the middle of editing a keyboard shortcut first complete that, by " "clicking outside the shortcut editing box." msgstr "您正在編輯鍵盤捷徑鍵途中,請先將它完成,也就是點選捷徑鍵編輯方塊以外的地方。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:485 msgid "&Lookup in dictionary" msgstr "在字典中查詢(&L)" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:490 msgid "&Search for next occurrence" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:536 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:147 msgid "Go to..." msgstr "移至..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:507 msgid "Next Section" msgstr "下一節" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:508 msgid "Previous Section" msgstr "上一節" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:510 msgid "Document Start" msgstr "文件的開頭" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:511 msgid "Document End" msgstr "文件的結尾" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:513 msgid "Section Start" msgstr "章節開頭" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/documentview.py:514 msgid "Section End" msgstr "章節結尾" @@ -16158,73 +16292,73 @@ msgstr "向左捲動" msgid "Scroll right" msgstr "向右捲動" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:117 msgid "Book format" msgstr "書籍格式" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:134 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:135 msgid "Position in book" msgstr "書籍中的位置" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:212 msgid "Go to a reference. To get reference numbers, use the reference mode." msgstr "移至參考點。要取得參考編號,請使用參考模式。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:220 msgid "Search for text in book" msgstr "搜尋書籍中的文字" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:271 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:272 #, python-format msgid "Toggle full screen (%s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 msgid "Full screen mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 msgid "Right click to show controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:309 msgid "Press Esc to quit" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:323 msgid "Show/hide controls" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:334 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:335 msgid "Print Preview" msgstr "預覽列印" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:344 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:345 msgid "Clear list of recently opened books" msgstr "清除目前開啟書籍的清單" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:425 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:426 #, python-format msgid "Connecting to dict.org to lookup: <b>%s</b>…" msgstr "連線到 dict.org 查詢:<b>%s</b>…" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:533 msgid "No such location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:534 msgid "The location pointed to by this item does not exist." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:584 msgid "Choose ebook" msgstr "選擇電子書" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:585 msgid "Ebooks" msgstr "電子書" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:603 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 #, python-format msgid "" "Make font size %(which)s\n" @@ -16233,78 +16367,78 @@ msgstr "" "讓字型大小 %(which)s\n" "目前的放大為:%(mag).1f" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:605 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 msgid "larger" msgstr "較大" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:609 msgid "smaller" msgstr "較小" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:625 #, python-format msgid "No matches found for: %s" msgstr "找不到符合項:%s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:662 msgid "Loading flow..." msgstr "正在載入 flow..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:698 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:700 #, python-format msgid "Laying out %s" msgstr "正在配置 %s" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:751 #, python-format msgid "Bookmark #%d" msgstr "書籤 #%d" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:755 msgid "Add bookmark" msgstr "加入書籤" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:746 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 msgid "Enter title for bookmark:" msgstr "請輸入書籤的標題:" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:756 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:767 msgid "Manage Bookmarks" msgstr "管理書籤" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:797 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 msgid "Loading ebook..." msgstr "正在載入電子書..." -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:809 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:821 msgid "Could not open ebook" msgstr "無法開啟電子書" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:916 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:929 msgid "Options to control the ebook viewer" msgstr "用來控制電子書檢視器的選項" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:923 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:936 msgid "" "If specified, viewer window will try to come to the front when started." msgstr "如果指定了,檢視器視窗在啟動時會嘗試移至最上層。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:926 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:939 msgid "" "If specified, viewer window will try to open full screen when started." msgstr "如果指定,檢視器視窗會在啟動時嘗試開啟全螢幕。" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:944 msgid "Print javascript alert and console messages to the console" msgstr "在主控台中顯示 javascript 警示及主控台訊息" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:933 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:946 msgid "" "The position at which to open the specified book. The position is a location " "as displayed in the top left corner of the viewer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:940 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:953 msgid "" "%prog [options] file\n" "\n" @@ -16491,7 +16625,7 @@ msgstr "歡迎使用 calibre" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:56 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:48 msgid "The one stop solution to all your e-book needs." -msgstr "滿足您所有電子書需求的一站式解決方案。" +msgstr "一次滿足您所有電子書需求的解決方案。" #: /home/kovid/work/calibre/src/calibre/gui2/wizard/device_ui.py:57 msgid "&Manufacturers" @@ -16550,10 +16684,6 @@ msgid "" msgstr "" "<p>選擇您的書籍存放的位置。當您將書籍加入 calibre,它們會複製到這裡,使用一個<b>空白資料夾</b>做為新的 calibre 書庫:" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:59 -msgid "&Change" -msgstr "變更(&C)" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:60 msgid "" "If you have an existing calibre library, it will be copied to the new " @@ -17120,6 +17250,8 @@ msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" msgstr "" +"\n" +"*** 加入 MOBI 輸出所要求的 'By Authors' 節區 ***" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:499 msgid "No enabled genres found to catalog.\n" @@ -17773,17 +17905,17 @@ msgstr "標籤必須只包含小寫字母、數字和底線,並以字母開頭 msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)s平均評等為 %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3466 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3470 #, python-format msgid "<p>Migrating old database to ebook library in %s<br><center>" msgstr "<p>將舊的資料庫轉移到 %s 的電子書庫<br><center>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3495 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3499 #, python-format msgid "Copying <b>%s</b>" msgstr "正在複製 <b>%s</b>" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3512 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3516 msgid "Compacting database" msgstr "正在壓實資料庫" @@ -18027,7 +18159,7 @@ msgstr "所有書籍" #: /home/kovid/work/calibre/src/calibre/library/server/ajax.py:295 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:341 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:625 -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:579 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:582 msgid "Newest" msgstr "最新" @@ -18190,40 +18322,40 @@ msgid "" "a small screen" msgstr "完整介面可以給您更多功能,但是它在小型螢幕上的表現可能不太好" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:126 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:129 #, python-format msgid "%d book" msgstr "%d 書籍" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:149 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:152 #, python-format msgid "%d items" msgstr "%d 個項目" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:167 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 #, python-format msgid "RATING: %s<br />" msgstr "評等:%s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:170 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:173 #, python-format msgid "TAGS: %s<br />" msgstr "標籤:%s<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:175 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:178 #, python-format msgid "SERIES: %(series)s [%(sidx)s]<br />" msgstr "系列: %(series)s [%(sidx)s]<br />" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:273 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:276 msgid "Books in your library" msgstr "書籍在您的書庫" -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:279 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:282 msgid "By " msgstr "由 " -#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:280 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:283 msgid "Books sorted by " msgstr "書籍排序依 " @@ -18317,7 +18449,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/config_base.py:420 msgid "" "Choose columns to be searched when not using prefixes, as for example, when " -"searching for Redd instead of title:Red. Enter a list of search/lookup names " +"searching for Red instead of title:Red. Enter a list of search/lookup names " "separated by commas. Only takes effect if you set the option to limit search " "columns above." msgstr "" @@ -19181,112 +19313,112 @@ msgstr "無標題的文章" msgid "Unknown News Source" msgstr "未知的新聞來源" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:752 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:755 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "「%s」食譜需要使用者名稱和密碼。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:859 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:862 msgid "Download finished" msgstr "下載完成" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:864 msgid "Failed to download the following articles:" msgstr "無法下載下列文章:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:870 msgid "Failed to download parts of the following articles:" msgstr "無法下載下列文章的部分:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:869 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:872 msgid " from " msgstr " 來自 " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:871 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:874 msgid "\tFailed links:" msgstr "\t失敗的連結:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:973 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:976 msgid "Could not fetch article." msgstr "無法取得文章。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:975 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:978 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:977 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:980 msgid "Run with -vv to see the reason" msgstr "以 -vv 執行以查看原因" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1000 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1003 msgid "Fetching feeds..." msgstr "正在取回餵送..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1005 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1008 msgid "Got feeds from index page" msgstr "從索引頁取得餵送" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1014 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1017 msgid "Trying to download cover..." msgstr "正在嘗試下載封面..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1016 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1019 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1096 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "開始下載 [%d 執行緒]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1112 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1115 #, python-format msgid "Feeds downloaded to %s" msgstr "將餵送下載到 %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1121 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1124 #, python-format msgid "Could not download cover: %s" msgstr "無法下載封面:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1130 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1133 #, python-format msgid "Downloading cover from %s" msgstr "正在從 %s 下載封面" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1176 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1179 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1257 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1260 msgid "Articles in this issue: " msgstr "這次發行期刊中的文章: " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1329 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1332 msgid "Untitled Article" msgstr "無標題的文章" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1401 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1404 #, python-format msgid "Article downloaded: %s" msgstr "已下載的文章:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1412 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1415 #, python-format msgid "Article download failed: %s" msgstr "下載失敗的文章:%s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1429 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 msgid "Fetching feed" msgstr "正在取回餵送" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1573 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1576 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." msgstr "無法登入,請檢查您的 calibre 週期性服務的使用者名稱與密碼。" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1588 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1591 msgid "" "You do not have permission to download this issue. Either your subscription " "has expired or you have exceeded the maximum allowed downloads for today." @@ -19638,7 +19770,7 @@ msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:130 msgid "Control order of categories in the tag browser" -msgstr "" +msgstr "控制分類在標籤瀏覽器中的順序" #: /home/kovid/work/calibre/resources/default_tweaks.py:131 msgid "" @@ -19910,6 +20042,8 @@ msgid "" "Set this to True to ensure that tags in 'Tags to add when adding\n" "a book' are added when copying books to another library" msgstr "" +"設定為 True 以確定在「加入書籍時要加入的標籤」\n" +"在複製書籍到另一個書庫時有加入" #: /home/kovid/work/calibre/resources/default_tweaks.py:352 msgid "Set the maximum number of tags to show per book in the content server" diff --git a/src/calibre/utils/config_base.py b/src/calibre/utils/config_base.py index 24dc5b2cc6..ab22c6b30b 100644 --- a/src/calibre/utils/config_base.py +++ b/src/calibre/utils/config_base.py @@ -387,7 +387,7 @@ def _prefs(): help=_('The language in which to display the user interface')) c.add_opt('output_format', default='EPUB', help=_('The default output format for ebook conversions.')) - c.add_opt('input_format_order', default=['EPUB', 'MOBI', 'LIT', 'PRC', + c.add_opt('input_format_order', default=['EPUB', 'AZW3', 'MOBI', 'LIT', 'PRC', 'FB2', 'HTML', 'HTM', 'XHTM', 'SHTML', 'XHTML', 'ZIP', 'ODT', 'RTF', 'PDF', 'TXT'], help=_('Ordered list of formats to prefer for input.')) @@ -418,7 +418,7 @@ def _prefs(): c.add_opt('limit_search_columns_to', default=['title', 'authors', 'tags', 'series', 'publisher'], help=_('Choose columns to be searched when not using prefixes, ' - 'as for example, when searching for Redd instead of ' + 'as for example, when searching for Red instead of ' 'title:Red. Enter a list of search/lookup names ' 'separated by commas. Only takes effect if you set the option ' 'to limit search columns above.')) diff --git a/src/calibre/utils/formatter_functions.py b/src/calibre/utils/formatter_functions.py index bfb2f036c0..5b620e54e3 100644 --- a/src/calibre/utils/formatter_functions.py +++ b/src/calibre/utils/formatter_functions.py @@ -217,7 +217,9 @@ class BuiltinTemplate(BuiltinFormatterFunction): 'characters are special, you must use [[ for the { character and ' ']] for the } character; they are converted automatically. ' 'For example, template(\'[[title_sort]]\') will evaluate the ' - 'template {title_sort} and return its value.') + 'template {title_sort} and return its value. Note also that ' + 'prefixes and suffixes (the "|prefix|suffix" syntax) cannot be ' + 'used in the argument to this function when using template program mode.') def evaluate(self, formatter, kwargs, mi, locals, template): template = template.replace('[[', '{').replace(']]', '}') @@ -230,7 +232,12 @@ class BuiltinEval(BuiltinFormatterFunction): __doc__ = doc = _('eval(template) -- evaluates the template, passing the local ' 'variables (those \'assign\'ed to) instead of the book metadata. ' ' This permits using the template processor to construct complex ' - 'results from local variables.') + 'results from local variables. Because the { and } ' + 'characters are special, you must use [[ for the { character and ' + ']] for the } character; they are converted automatically. ' + 'Note also that prefixes and suffixes (the "|prefix|suffix" syntax) ' + 'cannot be used in the argument to this function when using ' + 'template program mode.') def evaluate(self, formatter, kwargs, mi, locals, template): from formatter import EvalFormatter diff --git a/src/calibre/utils/html5_entities.py b/src/calibre/utils/html5_entities.py new file mode 100644 index 0000000000..0c4caef8fc --- /dev/null +++ b/src/calibre/utils/html5_entities.py @@ -0,0 +1,2125 @@ +entity_map = {'AElig': u'\xc6', + 'AMP': u'&', + 'Aacute': u'\xc1', + 'Abreve': u'\u0102', + 'Acirc': u'\xc2', + 'Acy': u'\u0410', + 'Afr': u'\U0001d504', + 'Agrave': u'\xc0', + 'Alpha': u'\u0391', + 'Amacr': u'\u0100', + 'And': u'\u2a53', + 'Aogon': u'\u0104', + 'Aopf': u'\U0001d538', + 'ApplyFunction': u'\u2061', + 'Aring': u'\xc5', + 'Ascr': u'\U0001d49c', + 'Assign': u'\u2254', + 'Atilde': u'\xc3', + 'Auml': u'\xc4', + 'Backslash': u'\u2216', + 'Barv': u'\u2ae7', + 'Barwed': u'\u2306', + 'Bcy': u'\u0411', + 'Because': u'\u2235', + 'Bernoullis': u'\u212c', + 'Beta': u'\u0392', + 'Bfr': u'\U0001d505', + 'Bopf': u'\U0001d539', + 'Breve': u'\u02d8', + 'Bscr': u'\u212c', + 'Bumpeq': u'\u224e', + 'CHcy': u'\u0427', + 'COPY': u'\xa9', + 'Cacute': u'\u0106', + 'Cap': u'\u22d2', + 'CapitalDifferentialD': u'\u2145', + 'Cayleys': u'\u212d', + 'Ccaron': u'\u010c', + 'Ccedil': u'\xc7', + 'Ccirc': u'\u0108', + 'Cconint': u'\u2230', + 'Cdot': u'\u010a', + 'Cedilla': u'\xb8', + 'CenterDot': u'\xb7', + 'Cfr': u'\u212d', + 'Chi': u'\u03a7', + 'CircleDot': u'\u2299', + 'CircleMinus': u'\u2296', + 'CirclePlus': u'\u2295', + 'CircleTimes': u'\u2297', + 'ClockwiseContourIntegral': u'\u2232', + 'CloseCurlyDoubleQuote': u'\u201d', + 'CloseCurlyQuote': u'\u2019', + 'Colon': u'\u2237', + 'Colone': u'\u2a74', + 'Congruent': u'\u2261', + 'Conint': u'\u222f', + 'ContourIntegral': u'\u222e', + 'Copf': u'\u2102', + 'Coproduct': u'\u2210', + 'CounterClockwiseContourIntegral': u'\u2233', + 'Cross': u'\u2a2f', + 'Cscr': u'\U0001d49e', + 'Cup': u'\u22d3', + 'CupCap': u'\u224d', + 'DD': u'\u2145', + 'DDotrahd': u'\u2911', + 'DJcy': u'\u0402', + 'DScy': u'\u0405', + 'DZcy': u'\u040f', + 'Dagger': u'\u2021', + 'Darr': u'\u21a1', + 'Dashv': u'\u2ae4', + 'Dcaron': u'\u010e', + 'Dcy': u'\u0414', + 'Del': u'\u2207', + 'Delta': u'\u0394', + 'Dfr': u'\U0001d507', + 'DiacriticalAcute': u'\xb4', + 'DiacriticalDot': u'\u02d9', + 'DiacriticalDoubleAcute': u'\u02dd', + 'DiacriticalGrave': u'`', + 'DiacriticalTilde': u'\u02dc', + 'Diamond': u'\u22c4', + 'DifferentialD': u'\u2146', + 'Dopf': u'\U0001d53b', + 'Dot': u'\xa8', + 'DotDot': u'\u20dc', + 'DotEqual': u'\u2250', + 'DoubleContourIntegral': u'\u222f', + 'DoubleDot': u'\xa8', + 'DoubleDownArrow': u'\u21d3', + 'DoubleLeftArrow': u'\u21d0', + 'DoubleLeftRightArrow': u'\u21d4', + 'DoubleLeftTee': u'\u2ae4', + 'DoubleLongLeftArrow': u'\u27f8', + 'DoubleLongLeftRightArrow': u'\u27fa', + 'DoubleLongRightArrow': u'\u27f9', + 'DoubleRightArrow': u'\u21d2', + 'DoubleRightTee': u'\u22a8', + 'DoubleUpArrow': u'\u21d1', + 'DoubleUpDownArrow': u'\u21d5', + 'DoubleVerticalBar': u'\u2225', + 'DownArrow': u'\u2193', + 'DownArrowBar': u'\u2913', + 'DownArrowUpArrow': u'\u21f5', + 'DownBreve': u'\u0311', + 'DownLeftRightVector': u'\u2950', + 'DownLeftTeeVector': u'\u295e', + 'DownLeftVector': u'\u21bd', + 'DownLeftVectorBar': u'\u2956', + 'DownRightTeeVector': u'\u295f', + 'DownRightVector': u'\u21c1', + 'DownRightVectorBar': u'\u2957', + 'DownTee': u'\u22a4', + 'DownTeeArrow': u'\u21a7', + 'Downarrow': u'\u21d3', + 'Dscr': u'\U0001d49f', + 'Dstrok': u'\u0110', + 'ENG': u'\u014a', + 'ETH': u'\xd0', + 'Eacute': u'\xc9', + 'Ecaron': u'\u011a', + 'Ecirc': u'\xca', + 'Ecy': u'\u042d', + 'Edot': u'\u0116', + 'Efr': u'\U0001d508', + 'Egrave': u'\xc8', + 'Element': u'\u2208', + 'Emacr': u'\u0112', + 'EmptySmallSquare': u'\u25fb', + 'EmptyVerySmallSquare': u'\u25ab', + 'Eogon': u'\u0118', + 'Eopf': u'\U0001d53c', + 'Epsilon': u'\u0395', + 'Equal': u'\u2a75', + 'EqualTilde': u'\u2242', + 'Equilibrium': u'\u21cc', + 'Escr': u'\u2130', + 'Esim': u'\u2a73', + 'Eta': u'\u0397', + 'Euml': u'\xcb', + 'Exists': u'\u2203', + 'ExponentialE': u'\u2147', + 'Fcy': u'\u0424', + 'Ffr': u'\U0001d509', + 'FilledSmallSquare': u'\u25fc', + 'FilledVerySmallSquare': u'\u25aa', + 'Fopf': u'\U0001d53d', + 'ForAll': u'\u2200', + 'Fouriertrf': u'\u2131', + 'Fscr': u'\u2131', + 'GJcy': u'\u0403', + 'GT': u'>', + 'Gamma': u'\u0393', + 'Gammad': u'\u03dc', + 'Gbreve': u'\u011e', + 'Gcedil': u'\u0122', + 'Gcirc': u'\u011c', + 'Gcy': u'\u0413', + 'Gdot': u'\u0120', + 'Gfr': u'\U0001d50a', + 'Gg': u'\u22d9', + 'Gopf': u'\U0001d53e', + 'GreaterEqual': u'\u2265', + 'GreaterEqualLess': u'\u22db', + 'GreaterFullEqual': u'\u2267', + 'GreaterGreater': u'\u2aa2', + 'GreaterLess': u'\u2277', + 'GreaterSlantEqual': u'\u2a7e', + 'GreaterTilde': u'\u2273', + 'Gscr': u'\U0001d4a2', + 'Gt': u'\u226b', + 'HARDcy': u'\u042a', + 'Hacek': u'\u02c7', + 'Hat': u'^', + 'Hcirc': u'\u0124', + 'Hfr': u'\u210c', + 'HilbertSpace': u'\u210b', + 'Hopf': u'\u210d', + 'HorizontalLine': u'\u2500', + 'Hscr': u'\u210b', + 'Hstrok': u'\u0126', + 'HumpDownHump': u'\u224e', + 'HumpEqual': u'\u224f', + 'IEcy': u'\u0415', + 'IJlig': u'\u0132', + 'IOcy': u'\u0401', + 'Iacute': u'\xcd', + 'Icirc': u'\xce', + 'Icy': u'\u0418', + 'Idot': u'\u0130', + 'Ifr': u'\u2111', + 'Igrave': u'\xcc', + 'Im': u'\u2111', + 'Imacr': u'\u012a', + 'ImaginaryI': u'\u2148', + 'Implies': u'\u21d2', + 'Int': u'\u222c', + 'Integral': u'\u222b', + 'Intersection': u'\u22c2', + 'InvisibleComma': u'\u2063', + 'InvisibleTimes': u'\u2062', + 'Iogon': u'\u012e', + 'Iopf': u'\U0001d540', + 'Iota': u'\u0399', + 'Iscr': u'\u2110', + 'Itilde': u'\u0128', + 'Iukcy': u'\u0406', + 'Iuml': u'\xcf', + 'Jcirc': u'\u0134', + 'Jcy': u'\u0419', + 'Jfr': u'\U0001d50d', + 'Jopf': u'\U0001d541', + 'Jscr': u'\U0001d4a5', + 'Jsercy': u'\u0408', + 'Jukcy': u'\u0404', + 'KHcy': u'\u0425', + 'KJcy': u'\u040c', + 'Kappa': u'\u039a', + 'Kcedil': u'\u0136', + 'Kcy': u'\u041a', + 'Kfr': u'\U0001d50e', + 'Kopf': u'\U0001d542', + 'Kscr': u'\U0001d4a6', + 'LJcy': u'\u0409', + 'LT': u'<', + 'Lacute': u'\u0139', + 'Lambda': u'\u039b', + 'Lang': u'\u27ea', + 'Laplacetrf': u'\u2112', + 'Larr': u'\u219e', + 'Lcaron': u'\u013d', + 'Lcedil': u'\u013b', + 'Lcy': u'\u041b', + 'LeftAngleBracket': u'\u27e8', + 'LeftArrow': u'\u2190', + 'LeftArrowBar': u'\u21e4', + 'LeftArrowRightArrow': u'\u21c6', + 'LeftCeiling': u'\u2308', + 'LeftDoubleBracket': u'\u27e6', + 'LeftDownTeeVector': u'\u2961', + 'LeftDownVector': u'\u21c3', + 'LeftDownVectorBar': u'\u2959', + 'LeftFloor': u'\u230a', + 'LeftRightArrow': u'\u2194', + 'LeftRightVector': u'\u294e', + 'LeftTee': u'\u22a3', + 'LeftTeeArrow': u'\u21a4', + 'LeftTeeVector': u'\u295a', + 'LeftTriangle': u'\u22b2', + 'LeftTriangleBar': u'\u29cf', + 'LeftTriangleEqual': u'\u22b4', + 'LeftUpDownVector': u'\u2951', + 'LeftUpTeeVector': u'\u2960', + 'LeftUpVector': u'\u21bf', + 'LeftUpVectorBar': u'\u2958', + 'LeftVector': u'\u21bc', + 'LeftVectorBar': u'\u2952', + 'Leftarrow': u'\u21d0', + 'Leftrightarrow': u'\u21d4', + 'LessEqualGreater': u'\u22da', + 'LessFullEqual': u'\u2266', + 'LessGreater': u'\u2276', + 'LessLess': u'\u2aa1', + 'LessSlantEqual': u'\u2a7d', + 'LessTilde': u'\u2272', + 'Lfr': u'\U0001d50f', + 'Ll': u'\u22d8', + 'Lleftarrow': u'\u21da', + 'Lmidot': u'\u013f', + 'LongLeftArrow': u'\u27f5', + 'LongLeftRightArrow': u'\u27f7', + 'LongRightArrow': u'\u27f6', + 'Longleftarrow': u'\u27f8', + 'Longleftrightarrow': u'\u27fa', + 'Longrightarrow': u'\u27f9', + 'Lopf': u'\U0001d543', + 'LowerLeftArrow': u'\u2199', + 'LowerRightArrow': u'\u2198', + 'Lscr': u'\u2112', + 'Lsh': u'\u21b0', + 'Lstrok': u'\u0141', + 'Lt': u'\u226a', + 'Map': u'\u2905', + 'Mcy': u'\u041c', + 'MediumSpace': u'\u205f', + 'Mellintrf': u'\u2133', + 'Mfr': u'\U0001d510', + 'MinusPlus': u'\u2213', + 'Mopf': u'\U0001d544', + 'Mscr': u'\u2133', + 'Mu': u'\u039c', + 'NJcy': u'\u040a', + 'Nacute': u'\u0143', + 'Ncaron': u'\u0147', + 'Ncedil': u'\u0145', + 'Ncy': u'\u041d', + 'NegativeMediumSpace': u'\u200b', + 'NegativeThickSpace': u'\u200b', + 'NegativeThinSpace': u'\u200b', + 'NegativeVeryThinSpace': u'\u200b', + 'NestedGreaterGreater': u'\u226b', + 'NestedLessLess': u'\u226a', + 'NewLine': u'\n', + 'Nfr': u'\U0001d511', + 'NoBreak': u'\u2060', + 'NonBreakingSpace': u'\xa0', + 'Nopf': u'\u2115', + 'Not': u'\u2aec', + 'NotCongruent': u'\u2262', + 'NotCupCap': u'\u226d', + 'NotDoubleVerticalBar': u'\u2226', + 'NotElement': u'\u2209', + 'NotEqual': u'\u2260', + 'NotEqualTilde': u'\u2242\u0338', + 'NotExists': u'\u2204', + 'NotGreater': u'\u226f', + 'NotGreaterEqual': u'\u2271', + 'NotGreaterFullEqual': u'\u2267\u0338', + 'NotGreaterGreater': u'\u226b\u0338', + 'NotGreaterLess': u'\u2279', + 'NotGreaterSlantEqual': u'\u2a7e\u0338', + 'NotGreaterTilde': u'\u2275', + 'NotHumpDownHump': u'\u224e\u0338', + 'NotHumpEqual': u'\u224f\u0338', + 'NotLeftTriangle': u'\u22ea', + 'NotLeftTriangleBar': u'\u29cf\u0338', + 'NotLeftTriangleEqual': u'\u22ec', + 'NotLess': u'\u226e', + 'NotLessEqual': u'\u2270', + 'NotLessGreater': u'\u2278', + 'NotLessLess': u'\u226a\u0338', + 'NotLessSlantEqual': u'\u2a7d\u0338', + 'NotLessTilde': u'\u2274', + 'NotNestedGreaterGreater': u'\u2aa2\u0338', + 'NotNestedLessLess': u'\u2aa1\u0338', + 'NotPrecedes': u'\u2280', + 'NotPrecedesEqual': u'\u2aaf\u0338', + 'NotPrecedesSlantEqual': u'\u22e0', + 'NotReverseElement': u'\u220c', + 'NotRightTriangle': u'\u22eb', + 'NotRightTriangleBar': u'\u29d0\u0338', + 'NotRightTriangleEqual': u'\u22ed', + 'NotSquareSubset': u'\u228f\u0338', + 'NotSquareSubsetEqual': u'\u22e2', + 'NotSquareSuperset': u'\u2290\u0338', + 'NotSquareSupersetEqual': u'\u22e3', + 'NotSubset': u'\u2282\u20d2', + 'NotSubsetEqual': u'\u2288', + 'NotSucceeds': u'\u2281', + 'NotSucceedsEqual': u'\u2ab0\u0338', + 'NotSucceedsSlantEqual': u'\u22e1', + 'NotSucceedsTilde': u'\u227f\u0338', + 'NotSuperset': u'\u2283\u20d2', + 'NotSupersetEqual': u'\u2289', + 'NotTilde': u'\u2241', + 'NotTildeEqual': u'\u2244', + 'NotTildeFullEqual': u'\u2247', + 'NotTildeTilde': u'\u2249', + 'NotVerticalBar': u'\u2224', + 'Nscr': u'\U0001d4a9', + 'Ntilde': u'\xd1', + 'Nu': u'\u039d', + 'OElig': u'\u0152', + 'Oacute': u'\xd3', + 'Ocirc': u'\xd4', + 'Ocy': u'\u041e', + 'Odblac': u'\u0150', + 'Ofr': u'\U0001d512', + 'Ograve': u'\xd2', + 'Omacr': u'\u014c', + 'Omega': u'\u03a9', + 'Omicron': u'\u039f', + 'Oopf': u'\U0001d546', + 'OpenCurlyDoubleQuote': u'\u201c', + 'OpenCurlyQuote': u'\u2018', + 'Or': u'\u2a54', + 'Oscr': u'\U0001d4aa', + 'Oslash': u'\xd8', + 'Otilde': u'\xd5', + 'Otimes': u'\u2a37', + 'Ouml': u'\xd6', + 'OverBar': u'\u203e', + 'OverBrace': u'\u23de', + 'OverBracket': u'\u23b4', + 'OverParenthesis': u'\u23dc', + 'PartialD': u'\u2202', + 'Pcy': u'\u041f', + 'Pfr': u'\U0001d513', + 'Phi': u'\u03a6', + 'Pi': u'\u03a0', + 'PlusMinus': u'\xb1', + 'Poincareplane': u'\u210c', + 'Popf': u'\u2119', + 'Pr': u'\u2abb', + 'Precedes': u'\u227a', + 'PrecedesEqual': u'\u2aaf', + 'PrecedesSlantEqual': u'\u227c', + 'PrecedesTilde': u'\u227e', + 'Prime': u'\u2033', + 'Product': u'\u220f', + 'Proportion': u'\u2237', + 'Proportional': u'\u221d', + 'Pscr': u'\U0001d4ab', + 'Psi': u'\u03a8', + 'QUOT': u'"', + 'Qfr': u'\U0001d514', + 'Qopf': u'\u211a', + 'Qscr': u'\U0001d4ac', + 'RBarr': u'\u2910', + 'REG': u'\xae', + 'Racute': u'\u0154', + 'Rang': u'\u27eb', + 'Rarr': u'\u21a0', + 'Rarrtl': u'\u2916', + 'Rcaron': u'\u0158', + 'Rcedil': u'\u0156', + 'Rcy': u'\u0420', + 'Re': u'\u211c', + 'ReverseElement': u'\u220b', + 'ReverseEquilibrium': u'\u21cb', + 'ReverseUpEquilibrium': u'\u296f', + 'Rfr': u'\u211c', + 'Rho': u'\u03a1', + 'RightAngleBracket': u'\u27e9', + 'RightArrow': u'\u2192', + 'RightArrowBar': u'\u21e5', + 'RightArrowLeftArrow': u'\u21c4', + 'RightCeiling': u'\u2309', + 'RightDoubleBracket': u'\u27e7', + 'RightDownTeeVector': u'\u295d', + 'RightDownVector': u'\u21c2', + 'RightDownVectorBar': u'\u2955', + 'RightFloor': u'\u230b', + 'RightTee': u'\u22a2', + 'RightTeeArrow': u'\u21a6', + 'RightTeeVector': u'\u295b', + 'RightTriangle': u'\u22b3', + 'RightTriangleBar': u'\u29d0', + 'RightTriangleEqual': u'\u22b5', + 'RightUpDownVector': u'\u294f', + 'RightUpTeeVector': u'\u295c', + 'RightUpVector': u'\u21be', + 'RightUpVectorBar': u'\u2954', + 'RightVector': u'\u21c0', + 'RightVectorBar': u'\u2953', + 'Rightarrow': u'\u21d2', + 'Ropf': u'\u211d', + 'RoundImplies': u'\u2970', + 'Rrightarrow': u'\u21db', + 'Rscr': u'\u211b', + 'Rsh': u'\u21b1', + 'RuleDelayed': u'\u29f4', + 'SHCHcy': u'\u0429', + 'SHcy': u'\u0428', + 'SOFTcy': u'\u042c', + 'Sacute': u'\u015a', + 'Sc': u'\u2abc', + 'Scaron': u'\u0160', + 'Scedil': u'\u015e', + 'Scirc': u'\u015c', + 'Scy': u'\u0421', + 'Sfr': u'\U0001d516', + 'ShortDownArrow': u'\u2193', + 'ShortLeftArrow': u'\u2190', + 'ShortRightArrow': u'\u2192', + 'ShortUpArrow': u'\u2191', + 'Sigma': u'\u03a3', + 'SmallCircle': u'\u2218', + 'Sopf': u'\U0001d54a', + 'Sqrt': u'\u221a', + 'Square': u'\u25a1', + 'SquareIntersection': u'\u2293', + 'SquareSubset': u'\u228f', + 'SquareSubsetEqual': u'\u2291', + 'SquareSuperset': u'\u2290', + 'SquareSupersetEqual': u'\u2292', + 'SquareUnion': u'\u2294', + 'Sscr': u'\U0001d4ae', + 'Star': u'\u22c6', + 'Sub': u'\u22d0', + 'Subset': u'\u22d0', + 'SubsetEqual': u'\u2286', + 'Succeeds': u'\u227b', + 'SucceedsEqual': u'\u2ab0', + 'SucceedsSlantEqual': u'\u227d', + 'SucceedsTilde': u'\u227f', + 'SuchThat': u'\u220b', + 'Sum': u'\u2211', + 'Sup': u'\u22d1', + 'Superset': u'\u2283', + 'SupersetEqual': u'\u2287', + 'Supset': u'\u22d1', + 'THORN': u'\xde', + 'TRADE': u'\u2122', + 'TSHcy': u'\u040b', + 'TScy': u'\u0426', + 'Tab': u'\t', + 'Tau': u'\u03a4', + 'Tcaron': u'\u0164', + 'Tcedil': u'\u0162', + 'Tcy': u'\u0422', + 'Tfr': u'\U0001d517', + 'Therefore': u'\u2234', + 'Theta': u'\u0398', + 'ThickSpace': u'\u205f\u200a', + 'ThinSpace': u'\u2009', + 'Tilde': u'\u223c', + 'TildeEqual': u'\u2243', + 'TildeFullEqual': u'\u2245', + 'TildeTilde': u'\u2248', + 'Topf': u'\U0001d54b', + 'TripleDot': u'\u20db', + 'Tscr': u'\U0001d4af', + 'Tstrok': u'\u0166', + 'Uacute': u'\xda', + 'Uarr': u'\u219f', + 'Uarrocir': u'\u2949', + 'Ubrcy': u'\u040e', + 'Ubreve': u'\u016c', + 'Ucirc': u'\xdb', + 'Ucy': u'\u0423', + 'Udblac': u'\u0170', + 'Ufr': u'\U0001d518', + 'Ugrave': u'\xd9', + 'Umacr': u'\u016a', + 'UnderBar': u'_', + 'UnderBrace': u'\u23df', + 'UnderBracket': u'\u23b5', + 'UnderParenthesis': u'\u23dd', + 'Union': u'\u22c3', + 'UnionPlus': u'\u228e', + 'Uogon': u'\u0172', + 'Uopf': u'\U0001d54c', + 'UpArrow': u'\u2191', + 'UpArrowBar': u'\u2912', + 'UpArrowDownArrow': u'\u21c5', + 'UpDownArrow': u'\u2195', + 'UpEquilibrium': u'\u296e', + 'UpTee': u'\u22a5', + 'UpTeeArrow': u'\u21a5', + 'Uparrow': u'\u21d1', + 'Updownarrow': u'\u21d5', + 'UpperLeftArrow': u'\u2196', + 'UpperRightArrow': u'\u2197', + 'Upsi': u'\u03d2', + 'Upsilon': u'\u03a5', + 'Uring': u'\u016e', + 'Uscr': u'\U0001d4b0', + 'Utilde': u'\u0168', + 'Uuml': u'\xdc', + 'VDash': u'\u22ab', + 'Vbar': u'\u2aeb', + 'Vcy': u'\u0412', + 'Vdash': u'\u22a9', + 'Vdashl': u'\u2ae6', + 'Vee': u'\u22c1', + 'Verbar': u'\u2016', + 'Vert': u'\u2016', + 'VerticalBar': u'\u2223', + 'VerticalLine': u'|', + 'VerticalSeparator': u'\u2758', + 'VerticalTilde': u'\u2240', + 'VeryThinSpace': u'\u200a', + 'Vfr': u'\U0001d519', + 'Vopf': u'\U0001d54d', + 'Vscr': u'\U0001d4b1', + 'Vvdash': u'\u22aa', + 'Wcirc': u'\u0174', + 'Wedge': u'\u22c0', + 'Wfr': u'\U0001d51a', + 'Wopf': u'\U0001d54e', + 'Wscr': u'\U0001d4b2', + 'Xfr': u'\U0001d51b', + 'Xi': u'\u039e', + 'Xopf': u'\U0001d54f', + 'Xscr': u'\U0001d4b3', + 'YAcy': u'\u042f', + 'YIcy': u'\u0407', + 'YUcy': u'\u042e', + 'Yacute': u'\xdd', + 'Ycirc': u'\u0176', + 'Ycy': u'\u042b', + 'Yfr': u'\U0001d51c', + 'Yopf': u'\U0001d550', + 'Yscr': u'\U0001d4b4', + 'Yuml': u'\u0178', + 'ZHcy': u'\u0416', + 'Zacute': u'\u0179', + 'Zcaron': u'\u017d', + 'Zcy': u'\u0417', + 'Zdot': u'\u017b', + 'ZeroWidthSpace': u'\u200b', + 'Zeta': u'\u0396', + 'Zfr': u'\u2128', + 'Zopf': u'\u2124', + 'Zscr': u'\U0001d4b5', + 'aacute': u'\xe1', + 'abreve': u'\u0103', + 'ac': u'\u223e', + 'acE': u'\u223e\u0333', + 'acd': u'\u223f', + 'acirc': u'\xe2', + 'acute': u'\xb4', + 'acy': u'\u0430', + 'aelig': u'\xe6', + 'af': u'\u2061', + 'afr': u'\U0001d51e', + 'agrave': u'\xe0', + 'alefsym': u'\u2135', + 'aleph': u'\u2135', + 'alpha': u'\u03b1', + 'amacr': u'\u0101', + 'amalg': u'\u2a3f', + 'amp': u'&', + 'and': u'\u2227', + 'andand': u'\u2a55', + 'andd': u'\u2a5c', + 'andslope': u'\u2a58', + 'andv': u'\u2a5a', + 'ang': u'\u2220', + 'ange': u'\u29a4', + 'angle': u'\u2220', + 'angmsd': u'\u2221', + 'angmsdaa': u'\u29a8', + 'angmsdab': u'\u29a9', + 'angmsdac': u'\u29aa', + 'angmsdad': u'\u29ab', + 'angmsdae': u'\u29ac', + 'angmsdaf': u'\u29ad', + 'angmsdag': u'\u29ae', + 'angmsdah': u'\u29af', + 'angrt': u'\u221f', + 'angrtvb': u'\u22be', + 'angrtvbd': u'\u299d', + 'angsph': u'\u2222', + 'angst': u'\xc5', + 'angzarr': u'\u237c', + 'aogon': u'\u0105', + 'aopf': u'\U0001d552', + 'ap': u'\u2248', + 'apE': u'\u2a70', + 'apacir': u'\u2a6f', + 'ape': u'\u224a', + 'apid': u'\u224b', + 'apos': u"'", + 'approx': u'\u2248', + 'approxeq': u'\u224a', + 'aring': u'\xe5', + 'ascr': u'\U0001d4b6', + 'ast': u'*', + 'asymp': u'\u2248', + 'asympeq': u'\u224d', + 'atilde': u'\xe3', + 'auml': u'\xe4', + 'awconint': u'\u2233', + 'awint': u'\u2a11', + 'bNot': u'\u2aed', + 'backcong': u'\u224c', + 'backepsilon': u'\u03f6', + 'backprime': u'\u2035', + 'backsim': u'\u223d', + 'backsimeq': u'\u22cd', + 'barvee': u'\u22bd', + 'barwed': u'\u2305', + 'barwedge': u'\u2305', + 'bbrk': u'\u23b5', + 'bbrktbrk': u'\u23b6', + 'bcong': u'\u224c', + 'bcy': u'\u0431', + 'bdquo': u'\u201e', + 'becaus': u'\u2235', + 'because': u'\u2235', + 'bemptyv': u'\u29b0', + 'bepsi': u'\u03f6', + 'bernou': u'\u212c', + 'beta': u'\u03b2', + 'beth': u'\u2136', + 'between': u'\u226c', + 'bfr': u'\U0001d51f', + 'bigcap': u'\u22c2', + 'bigcirc': u'\u25ef', + 'bigcup': u'\u22c3', + 'bigodot': u'\u2a00', + 'bigoplus': u'\u2a01', + 'bigotimes': u'\u2a02', + 'bigsqcup': u'\u2a06', + 'bigstar': u'\u2605', + 'bigtriangledown': u'\u25bd', + 'bigtriangleup': u'\u25b3', + 'biguplus': u'\u2a04', + 'bigvee': u'\u22c1', + 'bigwedge': u'\u22c0', + 'bkarow': u'\u290d', + 'blacklozenge': u'\u29eb', + 'blacksquare': u'\u25aa', + 'blacktriangle': u'\u25b4', + 'blacktriangledown': u'\u25be', + 'blacktriangleleft': u'\u25c2', + 'blacktriangleright': u'\u25b8', + 'blank': u'\u2423', + 'blk12': u'\u2592', + 'blk14': u'\u2591', + 'blk34': u'\u2593', + 'block': u'\u2588', + 'bne': u'=\u20e5', + 'bnequiv': u'\u2261\u20e5', + 'bnot': u'\u2310', + 'bopf': u'\U0001d553', + 'bot': u'\u22a5', + 'bottom': u'\u22a5', + 'bowtie': u'\u22c8', + 'boxDL': u'\u2557', + 'boxDR': u'\u2554', + 'boxDl': u'\u2556', + 'boxDr': u'\u2553', + 'boxH': u'\u2550', + 'boxHD': u'\u2566', + 'boxHU': u'\u2569', + 'boxHd': u'\u2564', + 'boxHu': u'\u2567', + 'boxUL': u'\u255d', + 'boxUR': u'\u255a', + 'boxUl': u'\u255c', + 'boxUr': u'\u2559', + 'boxV': u'\u2551', + 'boxVH': u'\u256c', + 'boxVL': u'\u2563', + 'boxVR': u'\u2560', + 'boxVh': u'\u256b', + 'boxVl': u'\u2562', + 'boxVr': u'\u255f', + 'boxbox': u'\u29c9', + 'boxdL': u'\u2555', + 'boxdR': u'\u2552', + 'boxdl': u'\u2510', + 'boxdr': u'\u250c', + 'boxh': u'\u2500', + 'boxhD': u'\u2565', + 'boxhU': u'\u2568', + 'boxhd': u'\u252c', + 'boxhu': u'\u2534', + 'boxminus': u'\u229f', + 'boxplus': u'\u229e', + 'boxtimes': u'\u22a0', + 'boxuL': u'\u255b', + 'boxuR': u'\u2558', + 'boxul': u'\u2518', + 'boxur': u'\u2514', + 'boxv': u'\u2502', + 'boxvH': u'\u256a', + 'boxvL': u'\u2561', + 'boxvR': u'\u255e', + 'boxvh': u'\u253c', + 'boxvl': u'\u2524', + 'boxvr': u'\u251c', + 'bprime': u'\u2035', + 'breve': u'\u02d8', + 'brvbar': u'\xa6', + 'bscr': u'\U0001d4b7', + 'bsemi': u'\u204f', + 'bsim': u'\u223d', + 'bsime': u'\u22cd', + 'bsol': u'\\', + 'bsolb': u'\u29c5', + 'bsolhsub': u'\u27c8', + 'bull': u'\u2022', + 'bullet': u'\u2022', + 'bump': u'\u224e', + 'bumpE': u'\u2aae', + 'bumpe': u'\u224f', + 'bumpeq': u'\u224f', + 'cacute': u'\u0107', + 'cap': u'\u2229', + 'capand': u'\u2a44', + 'capbrcup': u'\u2a49', + 'capcap': u'\u2a4b', + 'capcup': u'\u2a47', + 'capdot': u'\u2a40', + 'caps': u'\u2229\ufe00', + 'caret': u'\u2041', + 'caron': u'\u02c7', + 'ccaps': u'\u2a4d', + 'ccaron': u'\u010d', + 'ccedil': u'\xe7', + 'ccirc': u'\u0109', + 'ccups': u'\u2a4c', + 'ccupssm': u'\u2a50', + 'cdot': u'\u010b', + 'cedil': u'\xb8', + 'cemptyv': u'\u29b2', + 'cent': u'\xa2', + 'centerdot': u'\xb7', + 'cfr': u'\U0001d520', + 'chcy': u'\u0447', + 'check': u'\u2713', + 'checkmark': u'\u2713', + 'chi': u'\u03c7', + 'cir': u'\u25cb', + 'cirE': u'\u29c3', + 'circ': u'\u02c6', + 'circeq': u'\u2257', + 'circlearrowleft': u'\u21ba', + 'circlearrowright': u'\u21bb', + 'circledR': u'\xae', + 'circledS': u'\u24c8', + 'circledast': u'\u229b', + 'circledcirc': u'\u229a', + 'circleddash': u'\u229d', + 'cire': u'\u2257', + 'cirfnint': u'\u2a10', + 'cirmid': u'\u2aef', + 'cirscir': u'\u29c2', + 'clubs': u'\u2663', + 'clubsuit': u'\u2663', + 'colon': u':', + 'colone': u'\u2254', + 'coloneq': u'\u2254', + 'comma': u',', + 'commat': u'@', + 'comp': u'\u2201', + 'compfn': u'\u2218', + 'complement': u'\u2201', + 'complexes': u'\u2102', + 'cong': u'\u2245', + 'congdot': u'\u2a6d', + 'conint': u'\u222e', + 'copf': u'\U0001d554', + 'coprod': u'\u2210', + 'copy': u'\xa9', + 'copysr': u'\u2117', + 'crarr': u'\u21b5', + 'cross': u'\u2717', + 'cscr': u'\U0001d4b8', + 'csub': u'\u2acf', + 'csube': u'\u2ad1', + 'csup': u'\u2ad0', + 'csupe': u'\u2ad2', + 'ctdot': u'\u22ef', + 'cudarrl': u'\u2938', + 'cudarrr': u'\u2935', + 'cuepr': u'\u22de', + 'cuesc': u'\u22df', + 'cularr': u'\u21b6', + 'cularrp': u'\u293d', + 'cup': u'\u222a', + 'cupbrcap': u'\u2a48', + 'cupcap': u'\u2a46', + 'cupcup': u'\u2a4a', + 'cupdot': u'\u228d', + 'cupor': u'\u2a45', + 'cups': u'\u222a\ufe00', + 'curarr': u'\u21b7', + 'curarrm': u'\u293c', + 'curlyeqprec': u'\u22de', + 'curlyeqsucc': u'\u22df', + 'curlyvee': u'\u22ce', + 'curlywedge': u'\u22cf', + 'curren': u'\xa4', + 'curvearrowleft': u'\u21b6', + 'curvearrowright': u'\u21b7', + 'cuvee': u'\u22ce', + 'cuwed': u'\u22cf', + 'cwconint': u'\u2232', + 'cwint': u'\u2231', + 'cylcty': u'\u232d', + 'dArr': u'\u21d3', + 'dHar': u'\u2965', + 'dagger': u'\u2020', + 'daleth': u'\u2138', + 'darr': u'\u2193', + 'dash': u'\u2010', + 'dashv': u'\u22a3', + 'dbkarow': u'\u290f', + 'dblac': u'\u02dd', + 'dcaron': u'\u010f', + 'dcy': u'\u0434', + 'dd': u'\u2146', + 'ddagger': u'\u2021', + 'ddarr': u'\u21ca', + 'ddotseq': u'\u2a77', + 'deg': u'\xb0', + 'delta': u'\u03b4', + 'demptyv': u'\u29b1', + 'dfisht': u'\u297f', + 'dfr': u'\U0001d521', + 'dharl': u'\u21c3', + 'dharr': u'\u21c2', + 'diam': u'\u22c4', + 'diamond': u'\u22c4', + 'diamondsuit': u'\u2666', + 'diams': u'\u2666', + 'die': u'\xa8', + 'digamma': u'\u03dd', + 'disin': u'\u22f2', + 'div': u'\xf7', + 'divide': u'\xf7', + 'divideontimes': u'\u22c7', + 'divonx': u'\u22c7', + 'djcy': u'\u0452', + 'dlcorn': u'\u231e', + 'dlcrop': u'\u230d', + 'dollar': u'$', + 'dopf': u'\U0001d555', + 'dot': u'\u02d9', + 'doteq': u'\u2250', + 'doteqdot': u'\u2251', + 'dotminus': u'\u2238', + 'dotplus': u'\u2214', + 'dotsquare': u'\u22a1', + 'doublebarwedge': u'\u2306', + 'downarrow': u'\u2193', + 'downdownarrows': u'\u21ca', + 'downharpoonleft': u'\u21c3', + 'downharpoonright': u'\u21c2', + 'drbkarow': u'\u2910', + 'drcorn': u'\u231f', + 'drcrop': u'\u230c', + 'dscr': u'\U0001d4b9', + 'dscy': u'\u0455', + 'dsol': u'\u29f6', + 'dstrok': u'\u0111', + 'dtdot': u'\u22f1', + 'dtri': u'\u25bf', + 'dtrif': u'\u25be', + 'duarr': u'\u21f5', + 'duhar': u'\u296f', + 'dwangle': u'\u29a6', + 'dzcy': u'\u045f', + 'dzigrarr': u'\u27ff', + 'eDDot': u'\u2a77', + 'eDot': u'\u2251', + 'eacute': u'\xe9', + 'easter': u'\u2a6e', + 'ecaron': u'\u011b', + 'ecir': u'\u2256', + 'ecirc': u'\xea', + 'ecolon': u'\u2255', + 'ecy': u'\u044d', + 'edot': u'\u0117', + 'ee': u'\u2147', + 'efDot': u'\u2252', + 'efr': u'\U0001d522', + 'eg': u'\u2a9a', + 'egrave': u'\xe8', + 'egs': u'\u2a96', + 'egsdot': u'\u2a98', + 'el': u'\u2a99', + 'elinters': u'\u23e7', + 'ell': u'\u2113', + 'els': u'\u2a95', + 'elsdot': u'\u2a97', + 'emacr': u'\u0113', + 'empty': u'\u2205', + 'emptyset': u'\u2205', + 'emptyv': u'\u2205', + 'emsp': u'\u2003', + 'emsp13': u'\u2004', + 'emsp14': u'\u2005', + 'eng': u'\u014b', + 'ensp': u'\u2002', + 'eogon': u'\u0119', + 'eopf': u'\U0001d556', + 'epar': u'\u22d5', + 'eparsl': u'\u29e3', + 'eplus': u'\u2a71', + 'epsi': u'\u03b5', + 'epsilon': u'\u03b5', + 'epsiv': u'\u03f5', + 'eqcirc': u'\u2256', + 'eqcolon': u'\u2255', + 'eqsim': u'\u2242', + 'eqslantgtr': u'\u2a96', + 'eqslantless': u'\u2a95', + 'equals': u'=', + 'equest': u'\u225f', + 'equiv': u'\u2261', + 'equivDD': u'\u2a78', + 'eqvparsl': u'\u29e5', + 'erDot': u'\u2253', + 'erarr': u'\u2971', + 'escr': u'\u212f', + 'esdot': u'\u2250', + 'esim': u'\u2242', + 'eta': u'\u03b7', + 'eth': u'\xf0', + 'euml': u'\xeb', + 'euro': u'\u20ac', + 'excl': u'!', + 'exist': u'\u2203', + 'expectation': u'\u2130', + 'exponentiale': u'\u2147', + 'fallingdotseq': u'\u2252', + 'fcy': u'\u0444', + 'female': u'\u2640', + 'ffilig': u'\ufb03', + 'fflig': u'\ufb00', + 'ffllig': u'\ufb04', + 'ffr': u'\U0001d523', + 'filig': u'\ufb01', + 'fjlig': u'fj', + 'flat': u'\u266d', + 'fllig': u'\ufb02', + 'fltns': u'\u25b1', + 'fnof': u'\u0192', + 'fopf': u'\U0001d557', + 'forall': u'\u2200', + 'fork': u'\u22d4', + 'forkv': u'\u2ad9', + 'fpartint': u'\u2a0d', + 'frac12': u'\xbd', + 'frac13': u'\u2153', + 'frac14': u'\xbc', + 'frac15': u'\u2155', + 'frac16': u'\u2159', + 'frac18': u'\u215b', + 'frac23': u'\u2154', + 'frac25': u'\u2156', + 'frac34': u'\xbe', + 'frac35': u'\u2157', + 'frac38': u'\u215c', + 'frac45': u'\u2158', + 'frac56': u'\u215a', + 'frac58': u'\u215d', + 'frac78': u'\u215e', + 'frasl': u'\u2044', + 'frown': u'\u2322', + 'fscr': u'\U0001d4bb', + 'gE': u'\u2267', + 'gEl': u'\u2a8c', + 'gacute': u'\u01f5', + 'gamma': u'\u03b3', + 'gammad': u'\u03dd', + 'gap': u'\u2a86', + 'gbreve': u'\u011f', + 'gcirc': u'\u011d', + 'gcy': u'\u0433', + 'gdot': u'\u0121', + 'ge': u'\u2265', + 'gel': u'\u22db', + 'geq': u'\u2265', + 'geqq': u'\u2267', + 'geqslant': u'\u2a7e', + 'ges': u'\u2a7e', + 'gescc': u'\u2aa9', + 'gesdot': u'\u2a80', + 'gesdoto': u'\u2a82', + 'gesdotol': u'\u2a84', + 'gesl': u'\u22db\ufe00', + 'gesles': u'\u2a94', + 'gfr': u'\U0001d524', + 'gg': u'\u226b', + 'ggg': u'\u22d9', + 'gimel': u'\u2137', + 'gjcy': u'\u0453', + 'gl': u'\u2277', + 'glE': u'\u2a92', + 'gla': u'\u2aa5', + 'glj': u'\u2aa4', + 'gnE': u'\u2269', + 'gnap': u'\u2a8a', + 'gnapprox': u'\u2a8a', + 'gne': u'\u2a88', + 'gneq': u'\u2a88', + 'gneqq': u'\u2269', + 'gnsim': u'\u22e7', + 'gopf': u'\U0001d558', + 'grave': u'`', + 'gscr': u'\u210a', + 'gsim': u'\u2273', + 'gsime': u'\u2a8e', + 'gsiml': u'\u2a90', + 'gt': u'>', + 'gtcc': u'\u2aa7', + 'gtcir': u'\u2a7a', + 'gtdot': u'\u22d7', + 'gtlPar': u'\u2995', + 'gtquest': u'\u2a7c', + 'gtrapprox': u'\u2a86', + 'gtrarr': u'\u2978', + 'gtrdot': u'\u22d7', + 'gtreqless': u'\u22db', + 'gtreqqless': u'\u2a8c', + 'gtrless': u'\u2277', + 'gtrsim': u'\u2273', + 'gvertneqq': u'\u2269\ufe00', + 'gvnE': u'\u2269\ufe00', + 'hArr': u'\u21d4', + 'hairsp': u'\u200a', + 'half': u'\xbd', + 'hamilt': u'\u210b', + 'hardcy': u'\u044a', + 'harr': u'\u2194', + 'harrcir': u'\u2948', + 'harrw': u'\u21ad', + 'hbar': u'\u210f', + 'hcirc': u'\u0125', + 'hearts': u'\u2665', + 'heartsuit': u'\u2665', + 'hellip': u'\u2026', + 'hercon': u'\u22b9', + 'hfr': u'\U0001d525', + 'hksearow': u'\u2925', + 'hkswarow': u'\u2926', + 'hoarr': u'\u21ff', + 'homtht': u'\u223b', + 'hookleftarrow': u'\u21a9', + 'hookrightarrow': u'\u21aa', + 'hopf': u'\U0001d559', + 'horbar': u'\u2015', + 'hscr': u'\U0001d4bd', + 'hslash': u'\u210f', + 'hstrok': u'\u0127', + 'hybull': u'\u2043', + 'hyphen': u'\u2010', + 'iacute': u'\xed', + 'ic': u'\u2063', + 'icirc': u'\xee', + 'icy': u'\u0438', + 'iecy': u'\u0435', + 'iexcl': u'\xa1', + 'iff': u'\u21d4', + 'ifr': u'\U0001d526', + 'igrave': u'\xec', + 'ii': u'\u2148', + 'iiiint': u'\u2a0c', + 'iiint': u'\u222d', + 'iinfin': u'\u29dc', + 'iiota': u'\u2129', + 'ijlig': u'\u0133', + 'imacr': u'\u012b', + 'image': u'\u2111', + 'imagline': u'\u2110', + 'imagpart': u'\u2111', + 'imath': u'\u0131', + 'imof': u'\u22b7', + 'imped': u'\u01b5', + 'in': u'\u2208', + 'incare': u'\u2105', + 'infin': u'\u221e', + 'infintie': u'\u29dd', + 'inodot': u'\u0131', + 'int': u'\u222b', + 'intcal': u'\u22ba', + 'integers': u'\u2124', + 'intercal': u'\u22ba', + 'intlarhk': u'\u2a17', + 'intprod': u'\u2a3c', + 'iocy': u'\u0451', + 'iogon': u'\u012f', + 'iopf': u'\U0001d55a', + 'iota': u'\u03b9', + 'iprod': u'\u2a3c', + 'iquest': u'\xbf', + 'iscr': u'\U0001d4be', + 'isin': u'\u2208', + 'isinE': u'\u22f9', + 'isindot': u'\u22f5', + 'isins': u'\u22f4', + 'isinsv': u'\u22f3', + 'isinv': u'\u2208', + 'it': u'\u2062', + 'itilde': u'\u0129', + 'iukcy': u'\u0456', + 'iuml': u'\xef', + 'jcirc': u'\u0135', + 'jcy': u'\u0439', + 'jfr': u'\U0001d527', + 'jmath': u'\u0237', + 'jopf': u'\U0001d55b', + 'jscr': u'\U0001d4bf', + 'jsercy': u'\u0458', + 'jukcy': u'\u0454', + 'kappa': u'\u03ba', + 'kappav': u'\u03f0', + 'kcedil': u'\u0137', + 'kcy': u'\u043a', + 'kfr': u'\U0001d528', + 'kgreen': u'\u0138', + 'khcy': u'\u0445', + 'kjcy': u'\u045c', + 'kopf': u'\U0001d55c', + 'kscr': u'\U0001d4c0', + 'lAarr': u'\u21da', + 'lArr': u'\u21d0', + 'lAtail': u'\u291b', + 'lBarr': u'\u290e', + 'lE': u'\u2266', + 'lEg': u'\u2a8b', + 'lHar': u'\u2962', + 'lacute': u'\u013a', + 'laemptyv': u'\u29b4', + 'lagran': u'\u2112', + 'lambda': u'\u03bb', + 'lang': u'\u27e8', + 'langd': u'\u2991', + 'langle': u'\u27e8', + 'lap': u'\u2a85', + 'laquo': u'\xab', + 'larr': u'\u2190', + 'larrb': u'\u21e4', + 'larrbfs': u'\u291f', + 'larrfs': u'\u291d', + 'larrhk': u'\u21a9', + 'larrlp': u'\u21ab', + 'larrpl': u'\u2939', + 'larrsim': u'\u2973', + 'larrtl': u'\u21a2', + 'lat': u'\u2aab', + 'latail': u'\u2919', + 'late': u'\u2aad', + 'lates': u'\u2aad\ufe00', + 'lbarr': u'\u290c', + 'lbbrk': u'\u2772', + 'lbrace': u'{', + 'lbrack': u'[', + 'lbrke': u'\u298b', + 'lbrksld': u'\u298f', + 'lbrkslu': u'\u298d', + 'lcaron': u'\u013e', + 'lcedil': u'\u013c', + 'lceil': u'\u2308', + 'lcub': u'{', + 'lcy': u'\u043b', + 'ldca': u'\u2936', + 'ldquo': u'\u201c', + 'ldquor': u'\u201e', + 'ldrdhar': u'\u2967', + 'ldrushar': u'\u294b', + 'ldsh': u'\u21b2', + 'le': u'\u2264', + 'leftarrow': u'\u2190', + 'leftarrowtail': u'\u21a2', + 'leftharpoondown': u'\u21bd', + 'leftharpoonup': u'\u21bc', + 'leftleftarrows': u'\u21c7', + 'leftrightarrow': u'\u2194', + 'leftrightarrows': u'\u21c6', + 'leftrightharpoons': u'\u21cb', + 'leftrightsquigarrow': u'\u21ad', + 'leftthreetimes': u'\u22cb', + 'leg': u'\u22da', + 'leq': u'\u2264', + 'leqq': u'\u2266', + 'leqslant': u'\u2a7d', + 'les': u'\u2a7d', + 'lescc': u'\u2aa8', + 'lesdot': u'\u2a7f', + 'lesdoto': u'\u2a81', + 'lesdotor': u'\u2a83', + 'lesg': u'\u22da\ufe00', + 'lesges': u'\u2a93', + 'lessapprox': u'\u2a85', + 'lessdot': u'\u22d6', + 'lesseqgtr': u'\u22da', + 'lesseqqgtr': u'\u2a8b', + 'lessgtr': u'\u2276', + 'lesssim': u'\u2272', + 'lfisht': u'\u297c', + 'lfloor': u'\u230a', + 'lfr': u'\U0001d529', + 'lg': u'\u2276', + 'lgE': u'\u2a91', + 'lhard': u'\u21bd', + 'lharu': u'\u21bc', + 'lharul': u'\u296a', + 'lhblk': u'\u2584', + 'ljcy': u'\u0459', + 'll': u'\u226a', + 'llarr': u'\u21c7', + 'llcorner': u'\u231e', + 'llhard': u'\u296b', + 'lltri': u'\u25fa', + 'lmidot': u'\u0140', + 'lmoust': u'\u23b0', + 'lmoustache': u'\u23b0', + 'lnE': u'\u2268', + 'lnap': u'\u2a89', + 'lnapprox': u'\u2a89', + 'lne': u'\u2a87', + 'lneq': u'\u2a87', + 'lneqq': u'\u2268', + 'lnsim': u'\u22e6', + 'loang': u'\u27ec', + 'loarr': u'\u21fd', + 'lobrk': u'\u27e6', + 'longleftarrow': u'\u27f5', + 'longleftrightarrow': u'\u27f7', + 'longmapsto': u'\u27fc', + 'longrightarrow': u'\u27f6', + 'looparrowleft': u'\u21ab', + 'looparrowright': u'\u21ac', + 'lopar': u'\u2985', + 'lopf': u'\U0001d55d', + 'loplus': u'\u2a2d', + 'lotimes': u'\u2a34', + 'lowast': u'\u2217', + 'lowbar': u'_', + 'loz': u'\u25ca', + 'lozenge': u'\u25ca', + 'lozf': u'\u29eb', + 'lpar': u'(', + 'lparlt': u'\u2993', + 'lrarr': u'\u21c6', + 'lrcorner': u'\u231f', + 'lrhar': u'\u21cb', + 'lrhard': u'\u296d', + 'lrm': u'\u200e', + 'lrtri': u'\u22bf', + 'lsaquo': u'\u2039', + 'lscr': u'\U0001d4c1', + 'lsh': u'\u21b0', + 'lsim': u'\u2272', + 'lsime': u'\u2a8d', + 'lsimg': u'\u2a8f', + 'lsqb': u'[', + 'lsquo': u'\u2018', + 'lsquor': u'\u201a', + 'lstrok': u'\u0142', + 'lt': u'<', + 'ltcc': u'\u2aa6', + 'ltcir': u'\u2a79', + 'ltdot': u'\u22d6', + 'lthree': u'\u22cb', + 'ltimes': u'\u22c9', + 'ltlarr': u'\u2976', + 'ltquest': u'\u2a7b', + 'ltrPar': u'\u2996', + 'ltri': u'\u25c3', + 'ltrie': u'\u22b4', + 'ltrif': u'\u25c2', + 'lurdshar': u'\u294a', + 'luruhar': u'\u2966', + 'lvertneqq': u'\u2268\ufe00', + 'lvnE': u'\u2268\ufe00', + 'mDDot': u'\u223a', + 'macr': u'\xaf', + 'male': u'\u2642', + 'malt': u'\u2720', + 'maltese': u'\u2720', + 'map': u'\u21a6', + 'mapsto': u'\u21a6', + 'mapstodown': u'\u21a7', + 'mapstoleft': u'\u21a4', + 'mapstoup': u'\u21a5', + 'marker': u'\u25ae', + 'mcomma': u'\u2a29', + 'mcy': u'\u043c', + 'mdash': u'\u2014', + 'measuredangle': u'\u2221', + 'mfr': u'\U0001d52a', + 'mho': u'\u2127', + 'micro': u'\xb5', + 'mid': u'\u2223', + 'midast': u'*', + 'midcir': u'\u2af0', + 'middot': u'\xb7', + 'minus': u'\u2212', + 'minusb': u'\u229f', + 'minusd': u'\u2238', + 'minusdu': u'\u2a2a', + 'mlcp': u'\u2adb', + 'mldr': u'\u2026', + 'mnplus': u'\u2213', + 'models': u'\u22a7', + 'mopf': u'\U0001d55e', + 'mp': u'\u2213', + 'mscr': u'\U0001d4c2', + 'mstpos': u'\u223e', + 'mu': u'\u03bc', + 'multimap': u'\u22b8', + 'mumap': u'\u22b8', + 'nGg': u'\u22d9\u0338', + 'nGt': u'\u226b\u20d2', + 'nGtv': u'\u226b\u0338', + 'nLeftarrow': u'\u21cd', + 'nLeftrightarrow': u'\u21ce', + 'nLl': u'\u22d8\u0338', + 'nLt': u'\u226a\u20d2', + 'nLtv': u'\u226a\u0338', + 'nRightarrow': u'\u21cf', + 'nVDash': u'\u22af', + 'nVdash': u'\u22ae', + 'nabla': u'\u2207', + 'nacute': u'\u0144', + 'nang': u'\u2220\u20d2', + 'nap': u'\u2249', + 'napE': u'\u2a70\u0338', + 'napid': u'\u224b\u0338', + 'napos': u'\u0149', + 'napprox': u'\u2249', + 'natur': u'\u266e', + 'natural': u'\u266e', + 'naturals': u'\u2115', + 'nbsp': u'\xa0', + 'nbump': u'\u224e\u0338', + 'nbumpe': u'\u224f\u0338', + 'ncap': u'\u2a43', + 'ncaron': u'\u0148', + 'ncedil': u'\u0146', + 'ncong': u'\u2247', + 'ncongdot': u'\u2a6d\u0338', + 'ncup': u'\u2a42', + 'ncy': u'\u043d', + 'ndash': u'\u2013', + 'ne': u'\u2260', + 'neArr': u'\u21d7', + 'nearhk': u'\u2924', + 'nearr': u'\u2197', + 'nearrow': u'\u2197', + 'nedot': u'\u2250\u0338', + 'nequiv': u'\u2262', + 'nesear': u'\u2928', + 'nesim': u'\u2242\u0338', + 'nexist': u'\u2204', + 'nexists': u'\u2204', + 'nfr': u'\U0001d52b', + 'ngE': u'\u2267\u0338', + 'nge': u'\u2271', + 'ngeq': u'\u2271', + 'ngeqq': u'\u2267\u0338', + 'ngeqslant': u'\u2a7e\u0338', + 'nges': u'\u2a7e\u0338', + 'ngsim': u'\u2275', + 'ngt': u'\u226f', + 'ngtr': u'\u226f', + 'nhArr': u'\u21ce', + 'nharr': u'\u21ae', + 'nhpar': u'\u2af2', + 'ni': u'\u220b', + 'nis': u'\u22fc', + 'nisd': u'\u22fa', + 'niv': u'\u220b', + 'njcy': u'\u045a', + 'nlArr': u'\u21cd', + 'nlE': u'\u2266\u0338', + 'nlarr': u'\u219a', + 'nldr': u'\u2025', + 'nle': u'\u2270', + 'nleftarrow': u'\u219a', + 'nleftrightarrow': u'\u21ae', + 'nleq': u'\u2270', + 'nleqq': u'\u2266\u0338', + 'nleqslant': u'\u2a7d\u0338', + 'nles': u'\u2a7d\u0338', + 'nless': u'\u226e', + 'nlsim': u'\u2274', + 'nlt': u'\u226e', + 'nltri': u'\u22ea', + 'nltrie': u'\u22ec', + 'nmid': u'\u2224', + 'nopf': u'\U0001d55f', + 'not': u'\xac', + 'notin': u'\u2209', + 'notinE': u'\u22f9\u0338', + 'notindot': u'\u22f5\u0338', + 'notinva': u'\u2209', + 'notinvb': u'\u22f7', + 'notinvc': u'\u22f6', + 'notni': u'\u220c', + 'notniva': u'\u220c', + 'notnivb': u'\u22fe', + 'notnivc': u'\u22fd', + 'npar': u'\u2226', + 'nparallel': u'\u2226', + 'nparsl': u'\u2afd\u20e5', + 'npart': u'\u2202\u0338', + 'npolint': u'\u2a14', + 'npr': u'\u2280', + 'nprcue': u'\u22e0', + 'npre': u'\u2aaf\u0338', + 'nprec': u'\u2280', + 'npreceq': u'\u2aaf\u0338', + 'nrArr': u'\u21cf', + 'nrarr': u'\u219b', + 'nrarrc': u'\u2933\u0338', + 'nrarrw': u'\u219d\u0338', + 'nrightarrow': u'\u219b', + 'nrtri': u'\u22eb', + 'nrtrie': u'\u22ed', + 'nsc': u'\u2281', + 'nsccue': u'\u22e1', + 'nsce': u'\u2ab0\u0338', + 'nscr': u'\U0001d4c3', + 'nshortmid': u'\u2224', + 'nshortparallel': u'\u2226', + 'nsim': u'\u2241', + 'nsime': u'\u2244', + 'nsimeq': u'\u2244', + 'nsmid': u'\u2224', + 'nspar': u'\u2226', + 'nsqsube': u'\u22e2', + 'nsqsupe': u'\u22e3', + 'nsub': u'\u2284', + 'nsubE': u'\u2ac5\u0338', + 'nsube': u'\u2288', + 'nsubset': u'\u2282\u20d2', + 'nsubseteq': u'\u2288', + 'nsubseteqq': u'\u2ac5\u0338', + 'nsucc': u'\u2281', + 'nsucceq': u'\u2ab0\u0338', + 'nsup': u'\u2285', + 'nsupE': u'\u2ac6\u0338', + 'nsupe': u'\u2289', + 'nsupset': u'\u2283\u20d2', + 'nsupseteq': u'\u2289', + 'nsupseteqq': u'\u2ac6\u0338', + 'ntgl': u'\u2279', + 'ntilde': u'\xf1', + 'ntlg': u'\u2278', + 'ntriangleleft': u'\u22ea', + 'ntrianglelefteq': u'\u22ec', + 'ntriangleright': u'\u22eb', + 'ntrianglerighteq': u'\u22ed', + 'nu': u'\u03bd', + 'num': u'#', + 'numero': u'\u2116', + 'numsp': u'\u2007', + 'nvDash': u'\u22ad', + 'nvHarr': u'\u2904', + 'nvap': u'\u224d\u20d2', + 'nvdash': u'\u22ac', + 'nvge': u'\u2265\u20d2', + 'nvgt': u'>\u20d2', + 'nvinfin': u'\u29de', + 'nvlArr': u'\u2902', + 'nvle': u'\u2264\u20d2', + 'nvlt': u'<\u20d2', + 'nvltrie': u'\u22b4\u20d2', + 'nvrArr': u'\u2903', + 'nvrtrie': u'\u22b5\u20d2', + 'nvsim': u'\u223c\u20d2', + 'nwArr': u'\u21d6', + 'nwarhk': u'\u2923', + 'nwarr': u'\u2196', + 'nwarrow': u'\u2196', + 'nwnear': u'\u2927', + 'oS': u'\u24c8', + 'oacute': u'\xf3', + 'oast': u'\u229b', + 'ocir': u'\u229a', + 'ocirc': u'\xf4', + 'ocy': u'\u043e', + 'odash': u'\u229d', + 'odblac': u'\u0151', + 'odiv': u'\u2a38', + 'odot': u'\u2299', + 'odsold': u'\u29bc', + 'oelig': u'\u0153', + 'ofcir': u'\u29bf', + 'ofr': u'\U0001d52c', + 'ogon': u'\u02db', + 'ograve': u'\xf2', + 'ogt': u'\u29c1', + 'ohbar': u'\u29b5', + 'ohm': u'\u03a9', + 'oint': u'\u222e', + 'olarr': u'\u21ba', + 'olcir': u'\u29be', + 'olcross': u'\u29bb', + 'oline': u'\u203e', + 'olt': u'\u29c0', + 'omacr': u'\u014d', + 'omega': u'\u03c9', + 'omicron': u'\u03bf', + 'omid': u'\u29b6', + 'ominus': u'\u2296', + 'oopf': u'\U0001d560', + 'opar': u'\u29b7', + 'operp': u'\u29b9', + 'oplus': u'\u2295', + 'or': u'\u2228', + 'orarr': u'\u21bb', + 'ord': u'\u2a5d', + 'order': u'\u2134', + 'orderof': u'\u2134', + 'ordf': u'\xaa', + 'ordm': u'\xba', + 'origof': u'\u22b6', + 'oror': u'\u2a56', + 'orslope': u'\u2a57', + 'orv': u'\u2a5b', + 'oscr': u'\u2134', + 'oslash': u'\xf8', + 'osol': u'\u2298', + 'otilde': u'\xf5', + 'otimes': u'\u2297', + 'otimesas': u'\u2a36', + 'ouml': u'\xf6', + 'ovbar': u'\u233d', + 'par': u'\u2225', + 'para': u'\xb6', + 'parallel': u'\u2225', + 'parsim': u'\u2af3', + 'parsl': u'\u2afd', + 'part': u'\u2202', + 'pcy': u'\u043f', + 'percnt': u'%', + 'period': u'.', + 'permil': u'\u2030', + 'perp': u'\u22a5', + 'pertenk': u'\u2031', + 'pfr': u'\U0001d52d', + 'phi': u'\u03c6', + 'phiv': u'\u03d5', + 'phmmat': u'\u2133', + 'phone': u'\u260e', + 'pi': u'\u03c0', + 'pitchfork': u'\u22d4', + 'piv': u'\u03d6', + 'planck': u'\u210f', + 'planckh': u'\u210e', + 'plankv': u'\u210f', + 'plus': u'+', + 'plusacir': u'\u2a23', + 'plusb': u'\u229e', + 'pluscir': u'\u2a22', + 'plusdo': u'\u2214', + 'plusdu': u'\u2a25', + 'pluse': u'\u2a72', + 'plusmn': u'\xb1', + 'plussim': u'\u2a26', + 'plustwo': u'\u2a27', + 'pm': u'\xb1', + 'pointint': u'\u2a15', + 'popf': u'\U0001d561', + 'pound': u'\xa3', + 'pr': u'\u227a', + 'prE': u'\u2ab3', + 'prap': u'\u2ab7', + 'prcue': u'\u227c', + 'pre': u'\u2aaf', + 'prec': u'\u227a', + 'precapprox': u'\u2ab7', + 'preccurlyeq': u'\u227c', + 'preceq': u'\u2aaf', + 'precnapprox': u'\u2ab9', + 'precneqq': u'\u2ab5', + 'precnsim': u'\u22e8', + 'precsim': u'\u227e', + 'prime': u'\u2032', + 'primes': u'\u2119', + 'prnE': u'\u2ab5', + 'prnap': u'\u2ab9', + 'prnsim': u'\u22e8', + 'prod': u'\u220f', + 'profalar': u'\u232e', + 'profline': u'\u2312', + 'profsurf': u'\u2313', + 'prop': u'\u221d', + 'propto': u'\u221d', + 'prsim': u'\u227e', + 'prurel': u'\u22b0', + 'pscr': u'\U0001d4c5', + 'psi': u'\u03c8', + 'puncsp': u'\u2008', + 'qfr': u'\U0001d52e', + 'qint': u'\u2a0c', + 'qopf': u'\U0001d562', + 'qprime': u'\u2057', + 'qscr': u'\U0001d4c6', + 'quaternions': u'\u210d', + 'quatint': u'\u2a16', + 'quest': u'?', + 'questeq': u'\u225f', + 'quot': u'"', + 'rAarr': u'\u21db', + 'rArr': u'\u21d2', + 'rAtail': u'\u291c', + 'rBarr': u'\u290f', + 'rHar': u'\u2964', + 'race': u'\u223d\u0331', + 'racute': u'\u0155', + 'radic': u'\u221a', + 'raemptyv': u'\u29b3', + 'rang': u'\u27e9', + 'rangd': u'\u2992', + 'range': u'\u29a5', + 'rangle': u'\u27e9', + 'raquo': u'\xbb', + 'rarr': u'\u2192', + 'rarrap': u'\u2975', + 'rarrb': u'\u21e5', + 'rarrbfs': u'\u2920', + 'rarrc': u'\u2933', + 'rarrfs': u'\u291e', + 'rarrhk': u'\u21aa', + 'rarrlp': u'\u21ac', + 'rarrpl': u'\u2945', + 'rarrsim': u'\u2974', + 'rarrtl': u'\u21a3', + 'rarrw': u'\u219d', + 'ratail': u'\u291a', + 'ratio': u'\u2236', + 'rationals': u'\u211a', + 'rbarr': u'\u290d', + 'rbbrk': u'\u2773', + 'rbrace': u'}', + 'rbrack': u']', + 'rbrke': u'\u298c', + 'rbrksld': u'\u298e', + 'rbrkslu': u'\u2990', + 'rcaron': u'\u0159', + 'rcedil': u'\u0157', + 'rceil': u'\u2309', + 'rcub': u'}', + 'rcy': u'\u0440', + 'rdca': u'\u2937', + 'rdldhar': u'\u2969', + 'rdquo': u'\u201d', + 'rdquor': u'\u201d', + 'rdsh': u'\u21b3', + 'real': u'\u211c', + 'realine': u'\u211b', + 'realpart': u'\u211c', + 'reals': u'\u211d', + 'rect': u'\u25ad', + 'reg': u'\xae', + 'rfisht': u'\u297d', + 'rfloor': u'\u230b', + 'rfr': u'\U0001d52f', + 'rhard': u'\u21c1', + 'rharu': u'\u21c0', + 'rharul': u'\u296c', + 'rho': u'\u03c1', + 'rhov': u'\u03f1', + 'rightarrow': u'\u2192', + 'rightarrowtail': u'\u21a3', + 'rightharpoondown': u'\u21c1', + 'rightharpoonup': u'\u21c0', + 'rightleftarrows': u'\u21c4', + 'rightleftharpoons': u'\u21cc', + 'rightrightarrows': u'\u21c9', + 'rightsquigarrow': u'\u219d', + 'rightthreetimes': u'\u22cc', + 'ring': u'\u02da', + 'risingdotseq': u'\u2253', + 'rlarr': u'\u21c4', + 'rlhar': u'\u21cc', + 'rlm': u'\u200f', + 'rmoust': u'\u23b1', + 'rmoustache': u'\u23b1', + 'rnmid': u'\u2aee', + 'roang': u'\u27ed', + 'roarr': u'\u21fe', + 'robrk': u'\u27e7', + 'ropar': u'\u2986', + 'ropf': u'\U0001d563', + 'roplus': u'\u2a2e', + 'rotimes': u'\u2a35', + 'rpar': u')', + 'rpargt': u'\u2994', + 'rppolint': u'\u2a12', + 'rrarr': u'\u21c9', + 'rsaquo': u'\u203a', + 'rscr': u'\U0001d4c7', + 'rsh': u'\u21b1', + 'rsqb': u']', + 'rsquo': u'\u2019', + 'rsquor': u'\u2019', + 'rthree': u'\u22cc', + 'rtimes': u'\u22ca', + 'rtri': u'\u25b9', + 'rtrie': u'\u22b5', + 'rtrif': u'\u25b8', + 'rtriltri': u'\u29ce', + 'ruluhar': u'\u2968', + 'rx': u'\u211e', + 'sacute': u'\u015b', + 'sbquo': u'\u201a', + 'sc': u'\u227b', + 'scE': u'\u2ab4', + 'scap': u'\u2ab8', + 'scaron': u'\u0161', + 'sccue': u'\u227d', + 'sce': u'\u2ab0', + 'scedil': u'\u015f', + 'scirc': u'\u015d', + 'scnE': u'\u2ab6', + 'scnap': u'\u2aba', + 'scnsim': u'\u22e9', + 'scpolint': u'\u2a13', + 'scsim': u'\u227f', + 'scy': u'\u0441', + 'sdot': u'\u22c5', + 'sdotb': u'\u22a1', + 'sdote': u'\u2a66', + 'seArr': u'\u21d8', + 'searhk': u'\u2925', + 'searr': u'\u2198', + 'searrow': u'\u2198', + 'sect': u'\xa7', + 'semi': u';', + 'seswar': u'\u2929', + 'setminus': u'\u2216', + 'setmn': u'\u2216', + 'sext': u'\u2736', + 'sfr': u'\U0001d530', + 'sfrown': u'\u2322', + 'sharp': u'\u266f', + 'shchcy': u'\u0449', + 'shcy': u'\u0448', + 'shortmid': u'\u2223', + 'shortparallel': u'\u2225', + 'shy': u'\xad', + 'sigma': u'\u03c3', + 'sigmaf': u'\u03c2', + 'sigmav': u'\u03c2', + 'sim': u'\u223c', + 'simdot': u'\u2a6a', + 'sime': u'\u2243', + 'simeq': u'\u2243', + 'simg': u'\u2a9e', + 'simgE': u'\u2aa0', + 'siml': u'\u2a9d', + 'simlE': u'\u2a9f', + 'simne': u'\u2246', + 'simplus': u'\u2a24', + 'simrarr': u'\u2972', + 'slarr': u'\u2190', + 'smallsetminus': u'\u2216', + 'smashp': u'\u2a33', + 'smeparsl': u'\u29e4', + 'smid': u'\u2223', + 'smile': u'\u2323', + 'smt': u'\u2aaa', + 'smte': u'\u2aac', + 'smtes': u'\u2aac\ufe00', + 'softcy': u'\u044c', + 'sol': u'/', + 'solb': u'\u29c4', + 'solbar': u'\u233f', + 'sopf': u'\U0001d564', + 'spades': u'\u2660', + 'spadesuit': u'\u2660', + 'spar': u'\u2225', + 'sqcap': u'\u2293', + 'sqcaps': u'\u2293\ufe00', + 'sqcup': u'\u2294', + 'sqcups': u'\u2294\ufe00', + 'sqsub': u'\u228f', + 'sqsube': u'\u2291', + 'sqsubset': u'\u228f', + 'sqsubseteq': u'\u2291', + 'sqsup': u'\u2290', + 'sqsupe': u'\u2292', + 'sqsupset': u'\u2290', + 'sqsupseteq': u'\u2292', + 'squ': u'\u25a1', + 'square': u'\u25a1', + 'squarf': u'\u25aa', + 'squf': u'\u25aa', + 'srarr': u'\u2192', + 'sscr': u'\U0001d4c8', + 'ssetmn': u'\u2216', + 'ssmile': u'\u2323', + 'sstarf': u'\u22c6', + 'star': u'\u2606', + 'starf': u'\u2605', + 'straightepsilon': u'\u03f5', + 'straightphi': u'\u03d5', + 'strns': u'\xaf', + 'sub': u'\u2282', + 'subE': u'\u2ac5', + 'subdot': u'\u2abd', + 'sube': u'\u2286', + 'subedot': u'\u2ac3', + 'submult': u'\u2ac1', + 'subnE': u'\u2acb', + 'subne': u'\u228a', + 'subplus': u'\u2abf', + 'subrarr': u'\u2979', + 'subset': u'\u2282', + 'subseteq': u'\u2286', + 'subseteqq': u'\u2ac5', + 'subsetneq': u'\u228a', + 'subsetneqq': u'\u2acb', + 'subsim': u'\u2ac7', + 'subsub': u'\u2ad5', + 'subsup': u'\u2ad3', + 'succ': u'\u227b', + 'succapprox': u'\u2ab8', + 'succcurlyeq': u'\u227d', + 'succeq': u'\u2ab0', + 'succnapprox': u'\u2aba', + 'succneqq': u'\u2ab6', + 'succnsim': u'\u22e9', + 'succsim': u'\u227f', + 'sum': u'\u2211', + 'sung': u'\u266a', + 'sup': u'\u2283', + 'sup1': u'\xb9', + 'sup2': u'\xb2', + 'sup3': u'\xb3', + 'supE': u'\u2ac6', + 'supdot': u'\u2abe', + 'supdsub': u'\u2ad8', + 'supe': u'\u2287', + 'supedot': u'\u2ac4', + 'suphsol': u'\u27c9', + 'suphsub': u'\u2ad7', + 'suplarr': u'\u297b', + 'supmult': u'\u2ac2', + 'supnE': u'\u2acc', + 'supne': u'\u228b', + 'supplus': u'\u2ac0', + 'supset': u'\u2283', + 'supseteq': u'\u2287', + 'supseteqq': u'\u2ac6', + 'supsetneq': u'\u228b', + 'supsetneqq': u'\u2acc', + 'supsim': u'\u2ac8', + 'supsub': u'\u2ad4', + 'supsup': u'\u2ad6', + 'swArr': u'\u21d9', + 'swarhk': u'\u2926', + 'swarr': u'\u2199', + 'swarrow': u'\u2199', + 'swnwar': u'\u292a', + 'szlig': u'\xdf', + 'target': u'\u2316', + 'tau': u'\u03c4', + 'tbrk': u'\u23b4', + 'tcaron': u'\u0165', + 'tcedil': u'\u0163', + 'tcy': u'\u0442', + 'tdot': u'\u20db', + 'telrec': u'\u2315', + 'tfr': u'\U0001d531', + 'there4': u'\u2234', + 'therefore': u'\u2234', + 'theta': u'\u03b8', + 'thetasym': u'\u03d1', + 'thetav': u'\u03d1', + 'thickapprox': u'\u2248', + 'thicksim': u'\u223c', + 'thinsp': u'\u2009', + 'thkap': u'\u2248', + 'thksim': u'\u223c', + 'thorn': u'\xfe', + 'tilde': u'\u02dc', + 'times': u'\xd7', + 'timesb': u'\u22a0', + 'timesbar': u'\u2a31', + 'timesd': u'\u2a30', + 'tint': u'\u222d', + 'toea': u'\u2928', + 'top': u'\u22a4', + 'topbot': u'\u2336', + 'topcir': u'\u2af1', + 'topf': u'\U0001d565', + 'topfork': u'\u2ada', + 'tosa': u'\u2929', + 'tprime': u'\u2034', + 'trade': u'\u2122', + 'triangle': u'\u25b5', + 'triangledown': u'\u25bf', + 'triangleleft': u'\u25c3', + 'trianglelefteq': u'\u22b4', + 'triangleq': u'\u225c', + 'triangleright': u'\u25b9', + 'trianglerighteq': u'\u22b5', + 'tridot': u'\u25ec', + 'trie': u'\u225c', + 'triminus': u'\u2a3a', + 'triplus': u'\u2a39', + 'trisb': u'\u29cd', + 'tritime': u'\u2a3b', + 'trpezium': u'\u23e2', + 'tscr': u'\U0001d4c9', + 'tscy': u'\u0446', + 'tshcy': u'\u045b', + 'tstrok': u'\u0167', + 'twixt': u'\u226c', + 'twoheadleftarrow': u'\u219e', + 'twoheadrightarrow': u'\u21a0', + 'uArr': u'\u21d1', + 'uHar': u'\u2963', + 'uacute': u'\xfa', + 'uarr': u'\u2191', + 'ubrcy': u'\u045e', + 'ubreve': u'\u016d', + 'ucirc': u'\xfb', + 'ucy': u'\u0443', + 'udarr': u'\u21c5', + 'udblac': u'\u0171', + 'udhar': u'\u296e', + 'ufisht': u'\u297e', + 'ufr': u'\U0001d532', + 'ugrave': u'\xf9', + 'uharl': u'\u21bf', + 'uharr': u'\u21be', + 'uhblk': u'\u2580', + 'ulcorn': u'\u231c', + 'ulcorner': u'\u231c', + 'ulcrop': u'\u230f', + 'ultri': u'\u25f8', + 'umacr': u'\u016b', + 'uml': u'\xa8', + 'uogon': u'\u0173', + 'uopf': u'\U0001d566', + 'uparrow': u'\u2191', + 'updownarrow': u'\u2195', + 'upharpoonleft': u'\u21bf', + 'upharpoonright': u'\u21be', + 'uplus': u'\u228e', + 'upsi': u'\u03c5', + 'upsih': u'\u03d2', + 'upsilon': u'\u03c5', + 'upuparrows': u'\u21c8', + 'urcorn': u'\u231d', + 'urcorner': u'\u231d', + 'urcrop': u'\u230e', + 'uring': u'\u016f', + 'urtri': u'\u25f9', + 'uscr': u'\U0001d4ca', + 'utdot': u'\u22f0', + 'utilde': u'\u0169', + 'utri': u'\u25b5', + 'utrif': u'\u25b4', + 'uuarr': u'\u21c8', + 'uuml': u'\xfc', + 'uwangle': u'\u29a7', + 'vArr': u'\u21d5', + 'vBar': u'\u2ae8', + 'vBarv': u'\u2ae9', + 'vDash': u'\u22a8', + 'vangrt': u'\u299c', + 'varepsilon': u'\u03f5', + 'varkappa': u'\u03f0', + 'varnothing': u'\u2205', + 'varphi': u'\u03d5', + 'varpi': u'\u03d6', + 'varpropto': u'\u221d', + 'varr': u'\u2195', + 'varrho': u'\u03f1', + 'varsigma': u'\u03c2', + 'varsubsetneq': u'\u228a\ufe00', + 'varsubsetneqq': u'\u2acb\ufe00', + 'varsupsetneq': u'\u228b\ufe00', + 'varsupsetneqq': u'\u2acc\ufe00', + 'vartheta': u'\u03d1', + 'vartriangleleft': u'\u22b2', + 'vartriangleright': u'\u22b3', + 'vcy': u'\u0432', + 'vdash': u'\u22a2', + 'vee': u'\u2228', + 'veebar': u'\u22bb', + 'veeeq': u'\u225a', + 'vellip': u'\u22ee', + 'verbar': u'|', + 'vert': u'|', + 'vfr': u'\U0001d533', + 'vltri': u'\u22b2', + 'vnsub': u'\u2282\u20d2', + 'vnsup': u'\u2283\u20d2', + 'vopf': u'\U0001d567', + 'vprop': u'\u221d', + 'vrtri': u'\u22b3', + 'vscr': u'\U0001d4cb', + 'vsubnE': u'\u2acb\ufe00', + 'vsubne': u'\u228a\ufe00', + 'vsupnE': u'\u2acc\ufe00', + 'vsupne': u'\u228b\ufe00', + 'vzigzag': u'\u299a', + 'wcirc': u'\u0175', + 'wedbar': u'\u2a5f', + 'wedge': u'\u2227', + 'wedgeq': u'\u2259', + 'weierp': u'\u2118', + 'wfr': u'\U0001d534', + 'wopf': u'\U0001d568', + 'wp': u'\u2118', + 'wr': u'\u2240', + 'wreath': u'\u2240', + 'wscr': u'\U0001d4cc', + 'xcap': u'\u22c2', + 'xcirc': u'\u25ef', + 'xcup': u'\u22c3', + 'xdtri': u'\u25bd', + 'xfr': u'\U0001d535', + 'xhArr': u'\u27fa', + 'xharr': u'\u27f7', + 'xi': u'\u03be', + 'xlArr': u'\u27f8', + 'xlarr': u'\u27f5', + 'xmap': u'\u27fc', + 'xnis': u'\u22fb', + 'xodot': u'\u2a00', + 'xopf': u'\U0001d569', + 'xoplus': u'\u2a01', + 'xotime': u'\u2a02', + 'xrArr': u'\u27f9', + 'xrarr': u'\u27f6', + 'xscr': u'\U0001d4cd', + 'xsqcup': u'\u2a06', + 'xuplus': u'\u2a04', + 'xutri': u'\u25b3', + 'xvee': u'\u22c1', + 'xwedge': u'\u22c0', + 'yacute': u'\xfd', + 'yacy': u'\u044f', + 'ycirc': u'\u0177', + 'ycy': u'\u044b', + 'yen': u'\xa5', + 'yfr': u'\U0001d536', + 'yicy': u'\u0457', + 'yopf': u'\U0001d56a', + 'yscr': u'\U0001d4ce', + 'yucy': u'\u044e', + 'yuml': u'\xff', + 'zacute': u'\u017a', + 'zcaron': u'\u017e', + 'zcy': u'\u0437', + 'zdot': u'\u017c', + 'zeetrf': u'\u2128', + 'zeta': u'\u03b6', + 'zfr': u'\U0001d537', + 'zhcy': u'\u0436', + 'zigrarr': u'\u21dd', + 'zopf': u'\U0001d56b', + 'zscr': u'\U0001d4cf', + 'zwj': u'\u200d', + 'zwnj': u'\u200c'} diff --git a/src/calibre/utils/ipc/launch.py b/src/calibre/utils/ipc/launch.py index 508e302708..3a6344132d 100644 --- a/src/calibre/utils/ipc/launch.py +++ b/src/calibre/utils/ipc/launch.py @@ -167,7 +167,8 @@ class Worker(object): ''' exe = self.gui_executable if self.gui else self.executable env = self.env - env['ORIGWD'] = cwd or os.path.abspath(os.getcwd()) + env[b'ORIGWD'] = binascii.hexlify(cPickle.dumps(cwd or + os.path.abspath(os.getcwdu()))) _cwd = cwd if priority is None: priority = prefs['worker_process_priority'] diff --git a/src/calibre/utils/ipc/simple_worker.py b/src/calibre/utils/ipc/simple_worker.py index c18d556aa3..fceb04cbfe 100644 --- a/src/calibre/utils/ipc/simple_worker.py +++ b/src/calibre/utils/ipc/simple_worker.py @@ -114,7 +114,8 @@ def fork_job(mod_name, func_name, args=(), kwargs={}, timeout=300, # seconds complete. If it takes longer a WorkerError is raised and the process is killed. - :param cwd: The working directory for the worker process. + :param cwd: The working directory for the worker process. I recommend + against using this, unless you are sure the path is pure ASCII. :param priority: The process priority for the worker process diff --git a/src/calibre/utils/logging.py b/src/calibre/utils/logging.py index 46b843565e..ad4a40c57e 100644 --- a/src/calibre/utils/logging.py +++ b/src/calibre/utils/logging.py @@ -122,6 +122,18 @@ class UnicodeHTMLStream(HTMLStream): end = self.normal if self.data else u'' return u''.join(self.data) + end + def dump(self): + return [self.data, self.plain_text, self.last_col] + + def load(self, dump): + self.data, self.plain_text, self.last_col = dump + + def append_dump(self, dump): + d, p, lc = dump + self.data.extend(d) + self.plain_text.extend(p) + self.last_col = lc + class Log(object): @@ -186,4 +198,14 @@ class GUILog(ThreadSafeLog): def plain_text(self): return u''.join(self.outputs[0].plain_text) + def dump(self): + return self.outputs[0].dump() + + def load(self, dump): + return self.outputs[0].load(dump) + + def append_dump(self, dump): + return self.outputs[0].append_dump(dump) + + default_log = Log() diff --git a/src/calibre/utils/pyconsole/interpreter.py b/src/calibre/utils/pyconsole/interpreter.py index 3cd0d94711..1c06f8102e 100644 --- a/src/calibre/utils/pyconsole/interpreter.py +++ b/src/calibre/utils/pyconsole/interpreter.py @@ -5,7 +5,7 @@ __license__ = 'GPL v3' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __docformat__ = 'restructuredtext en' -import sys, cPickle, os +import sys, cPickle, os, binascii from code import InteractiveInterpreter from Queue import Queue, Empty from threading import Thread @@ -130,7 +130,7 @@ class Interpreter(InteractiveInterpreter): # {{{ # }}} def connect(): - os.chdir(os.environ['ORIGWD']) + os.chdir(cPickle.loads(binascii.unhexlify(os.environ['ORIGWD']))) address = cPickle.loads(unhexlify(os.environ['CALIBRE_WORKER_ADDRESS'])) key = unhexlify(os.environ['CALIBRE_WORKER_KEY']) return Client(address, authkey=key) diff --git a/src/calibre/web/feeds/news.py b/src/calibre/web/feeds/news.py index 77428e4c07..75e9d03d6e 100644 --- a/src/calibre/web/feeds/news.py +++ b/src/calibre/web/feeds/news.py @@ -648,7 +648,10 @@ class BasicNewsRecipe(Recipe): 'url' : URL of print version, 'date' : The publication date of the article as a string, 'description' : A summary of the article - 'content' : The full article (can be an empty string). This is used by FullContentProfile + 'content' : The full article (can be an empty string). Obsolete + do not use, instead save the content to a temporary + file and pass a file:///path/to/temp/file.html as + the URL. } For an example, see the recipe for downloading `The Atlantic`. diff --git a/src/cherrypy/lib/auth_digest.py b/src/cherrypy/lib/auth_digest.py index 67578e0015..490b431577 100644 --- a/src/cherrypy/lib/auth_digest.py +++ b/src/cherrypy/lib/auth_digest.py @@ -33,7 +33,8 @@ qop_auth = 'auth' qop_auth_int = 'auth-int' valid_qops = (qop_auth, qop_auth_int) -valid_algorithms = ('MD5', 'MD5-sess') +valid_algorithms = ('MD5', 'MD5-sess', 'md5', 'md5-sess') # Changed by Kovid to + # add lowercase def TRACE(msg): @@ -67,7 +68,7 @@ def get_ha1_dict(user_ha1_dict): argument to digest_auth(). """ def get_ha1(realm, username): - return user_ha1_dict.get(user) + return user_ha1_dict.get(username) # Changed by Kovid to fix typo return get_ha1 @@ -107,10 +108,10 @@ def synthesize_nonce(s, key, timestamp=None): key A secret string known only to the server. - + timestamp An integer seconds-since-the-epoch timestamp - + """ if timestamp is None: timestamp = int(time.time()) @@ -190,10 +191,10 @@ class HttpDigestAuthorization (object): s A string related to the resource, such as the hostname of the server. - + key A secret string known only to the server. - + Both s and key must be the same values which were used to synthesize the nonce we are trying to validate. """ @@ -256,7 +257,7 @@ class HttpDigestAuthorization (object): 4.3. This refers to the entity the user agent sent in the request which has the Authorization header. Typically GET requests don't have an entity, and POST requests do. - + """ ha2 = self.HA2(entity_body) # Request-Digest -- RFC 2617 3.2.2.1 @@ -302,16 +303,16 @@ def www_authenticate(realm, key, algorithm='MD5', nonce=None, qop=qop_auth, stal def digest_auth(realm, get_ha1, key, debug=False): """A CherryPy tool which hooks at before_handler to perform HTTP Digest Access Authentication, as specified in :rfc:`2617`. - + If the request has an 'authorization' header with a 'Digest' scheme, this tool authenticates the credentials supplied in that header. If the request has no 'authorization' header, or if it does but the scheme is not "Digest", or if authentication fails, the tool sends a 401 response with a 'WWW-Authenticate' Digest header. - + realm A string containing the authentication realm. - + get_ha1 A callable which looks up a username in a credentials store and returns the HA1 string, which is defined in the RFC to be @@ -320,13 +321,13 @@ def digest_auth(realm, get_ha1, key, debug=False): where username is obtained from the request's 'authorization' header. If username is not found in the credentials store, get_ha1() returns None. - + key A secret string known only to the server, used in the synthesis of nonces. - + """ request = cherrypy.serving.request - + auth_header = request.headers.get('authorization') nonce_is_stale = False if auth_header is not None: @@ -334,10 +335,10 @@ def digest_auth(realm, get_ha1, key, debug=False): auth = HttpDigestAuthorization(auth_header, request.method, debug=debug) except ValueError: raise cherrypy.HTTPError(400, "The Authorization header could not be parsed.") - + if debug: TRACE(str(auth)) - + if auth.validate_nonce(realm, key): ha1 = get_ha1(realm, auth.username) if ha1 is not None: @@ -355,7 +356,7 @@ def digest_auth(realm, get_ha1, key, debug=False): if debug: TRACE("authentication of %s successful" % auth.username) return - + # Respond with 401 status and a WWW-Authenticate header header = www_authenticate(realm, key, stale=nonce_is_stale) if debug: diff --git a/src/odf/odf2xhtml.py b/src/odf/odf2xhtml.py index 697228e005..4f79574043 100644 --- a/src/odf/odf2xhtml.py +++ b/src/odf/odf2xhtml.py @@ -760,7 +760,10 @@ class ODF2XHTML(handler.ContentHandler): def s_draw_object_ole(self, tag, attrs): """ A <draw:object-ole> is embedded OLE object in the document (e.g. MS Graph). """ - class_id = attrs[(DRAWNS,"class-id")] + try: + class_id = attrs[(DRAWNS,"class-id")] + except KeyError: # Added by Kovid to ignore <draw> without the right + return # attributes if class_id and class_id.lower() == "00020803-0000-0000-c000-000000000046": ## Microsoft Graph 97 Chart tagattrs = { 'name':'object_ole_graph', 'class':'ole-graph' } self.opentag('a', tagattrs)