diff --git a/.bzrignore b/.bzrignore index 6b6450f1f9..8711782023 100644 --- a/.bzrignore +++ b/.bzrignore @@ -40,6 +40,7 @@ recipes/.gitignore recipes/README.md recipes/icon_checker.py recipes/readme_updater.py +recipes/garfield.recipe recipes/katalog_egazeciarz.recipe recipes/tv_axnscifi.recipe recipes/tv_comedycentral.recipe @@ -63,6 +64,7 @@ recipes/tv_tvppolonia.recipe recipes/tv_tvpuls.recipe recipes/tv_viasathistory.recipe recipes/icons/katalog_egazeciarz.png +recipes/icons/garfield.png recipes/icons/tv_axnscifi.png recipes/icons/tv_comedycentral.png recipes/icons/tv_discoveryscience.png diff --git a/Changelog.yaml b/Changelog.yaml index 129285a6b1..8fb8965e8d 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -1,3 +1,4 @@ +# vim:fileencoding=UTF-8:ts=2:sw=2:sta:et:sts=2:ai # Each release can have new features and bug fixes. Each of which # must have a title and can optionally have linked tickets and a description. # In addition they can have a type field which defaults to minor, but should be major @@ -19,6 +20,101 @@ # new recipes: # - title: +- version: 0.9.26 + date: 2013-04-05 + + new features: + - title: "PDF Output: Allow using templates to create arbitrary headers and footers. Look under PDF Output in the conversion dialog for this feature." + + - title: "ToC Editor: Allow generating the ToC directly from individual files inside the ebook. Useful for EPUBs that have individual chapters in single files." + tickets: [1163520] + + - title: "ToC Editor: Add buttons to indent/unindent the current entry" + + - title: "ToC Editor: Right-click menu to perform various useful actions on entries in the ToC" + + - title: "Column icons: Allow use of wide images as column icons" + + - title: "Add USB ids for the Palm Pre2 and Samsung Galaxy phone to the device drivers" + tickets: [1162293,1163115] + + bug fixes: + - title: "PDF Output: Fix generating page numbers causing links to not work." + tickets: [1162573] + + - title: "Wrong filename output in error message when 'Guide reference not found'" + tickets: [1163659] + + - title: "Get Books: Update Amazon, Barnes & Noble, Waterstones and Gutenberg store plugins for website change" + + - title: "PDF Output: Fix 1 pixel wide left and top margins on the cover page for some PDF conversions due to incorrect rounding." + tickets: [1162054] + + - title: "ToC Editor: Fix drag and drop of multiple items resulting in the dropped items being in random order sometimes." + tickets: [1161999] + + improved recipes: + - Financial Times UK + - Sing Tao Daily + - Apple Daily + - A List Apart + - Business Week + - Harpers printed edition + - Harvard Business Review + + new recipes: + - title: AM730 + author: Eddie Lau + + - title: Arret sur images + author: Francois D + + - title: Diario de Noticias + author: Jose Pinto + +- version: 0.9.25 + date: 2013-03-29 + + new features: + - title: "Automatic adding: When checking for duplicates is enabled, use the same duplicates found dialog as is used during manual adding." + tickets: [1160914] + + - title: "ToC Editor: Allow searching to find a location quickly when browsing through the book to select a location for a ToC item" + + - title: "ToC Editor: Add a button to quickly flatten the entire table of contents" + + - title: "Conversion: When converting a single book to EPUB or AZW3, add an option to automatically launch the Table of Contents editor after the conversion completes. Found under the Table of Contents section of the conversion dialog." + + bug fixes: + - title: "calibredb: Nicer error messages when user provides invalid input" + tickets: [1160452,1160631] + + - title: "News download: Always use the .jpg extension for jpeg images as apparently Moon+ Reader cannot handle .jpeg" + + - title: "Fix Book Details popup keyboard navigation doesn't work on a Mac" + tickets: [1159610] + + - title: "Fix a regression that caused the case of the book files to not be changed when changing the case of the title/author on case insensitive filesystems" + + improved recipes: + - RTE news + - Various Polish news sources + - Psychology Today + - Foreign Affairs + - History Today + - Harpers Magazine (printed edition) + - Business Week Magazine + - The Hindu + - Irish Times + - Le Devoir + + new recipes: + - title: Fortune Magazine + author: Rick Shang + + - title: Eclipse Online + author: Jim DeVona + - version: 0.9.24 date: 2013-03-22 diff --git a/manual/conversion.rst b/manual/conversion.rst index bf451d0980..14710f3f6a 100644 --- a/manual/conversion.rst +++ b/manual/conversion.rst @@ -750,8 +750,61 @@ If this property is detected by |app|, the following custom properties are recog opf.series opf.seriesindex -In addition to this, you can specify the picture to use as the cover by naming it ``opf.cover`` (right click, Picture->Options->Name) in the ODT. If no picture with this name is found, the 'smart' method is used. -As the cover detection might result in double covers in certain output formats, the process will remove the paragraph (only if the only content is the cover!) from the document. But this works only with the named picture! +In addition to this, you can specify the picture to use as the cover by naming +it ``opf.cover`` (right click, Picture->Options->Name) in the ODT. If no +picture with this name is found, the 'smart' method is used. As the cover +detection might result in double covers in certain output formats, the process +will remove the paragraph (only if the only content is the cover!) from the +document. But this works only with the named picture! To disable cover detection you can set the custom property ``opf.nocover`` ('Yes or No' type) to Yes in advanced mode. +Converting to PDF +~~~~~~~~~~~~~~~~~~~ + +The first, most important, setting to decide on when converting to PDF is the page +size. By default, |app| uses a page size defined by the current +:guilabel:`Output profile`. So if your output profile is set to Kindle, |app| +will create a PDF with page size suitable for viewing on the small kindle +screen. However, if you view this PDF file on a computer screen, then it will +appear to have too large fonts. To create "normal" sized PDFs, use the override +page size option under :guilabel:`PDF Output` in the conversion dialog. + +You can insert arbitrary headers and footers on each page of the PDF by +specifying header and footer templates. Templates are just snippets of HTML +code that get rendered in the header and footer locations. For example, to +display page numbers centered at the bottom of every page, in green, use the following +footer template:: + +

Page _PAGENUM_

+ +|app| will automatically replace _PAGENUM_ with the current page number. You +can even put different content on even and odd pages, for example the following +header template will show the title on odd pages and the author on even pages:: + +

_AUTHOR__TITLE_

+ +|app| will automatically replace _TITLE_ and _AUTHOR_ with the title and author +of the document being converted. You can also display text at the left and +right edges and change the font size, as demonstrated with this header +template:: + +

_TITLE_

_AUTHOR_

+ +This will display the title at the left and the author at the right, in a font +size smaller than the main text. + +Finally, you can also use the current section in templates, as shown below:: + +

_SECTION_

+ +_SECTION_ is replaced by whatever the name of the current section is. These +names are taken from the metadata Table of Contents in the document (the PDF +Outline). If the document has no table of contents then it will be replaced by +empty text. If a single PDF page has multiple sections, the first section on +the page will be used. + +.. note:: When adding headers and footers make sure you set the page top and + bottom margins to large enough values, under the Page Setup section of the + conversion dialog. + diff --git a/manual/faq.rst b/manual/faq.rst index 7ef0f20a95..a73a380029 100644 --- a/manual/faq.rst +++ b/manual/faq.rst @@ -129,11 +129,11 @@ tool that always produces valid EPUBs, |app| is not for you. How do I use some of the advanced features of the conversion tools? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - You can get help on any individual feature of the converters by mousing over - it in the GUI or running ``ebook-convert dummy.html .epub -h`` at a terminal. - A good place to start is to look at the following demo files that demonstrate - some of the advanced features: - * `html-demo.zip `_ +You can get help on any individual feature of the converters by mousing over +it in the GUI or running ``ebook-convert dummy.html .epub -h`` at a terminal. +A good place to start is to look at the following demo file that demonstrates +some of the advanced features +`html-demo.zip `_ Device Integration @@ -647,12 +647,17 @@ computers. Run |app| on a single computer and access it via the Content Server or a Remote Desktop solution. If you must share the actual library, use a file syncing tool like -DropBox or rsync or Microsoft SkyDrive instead of a networked drive. Even with -these tools there is danger of data corruption/loss, so only do this if you are -willing to live with that risk. In particular, be aware that **Google Drive** -is incompatible with |app|, if you put your |app| library in Google Drive, you -*will* suffer data loss. See -`this thread `_ for details. +DropBox or rsync or Microsoft SkyDrive instead of a networked drive. If you are +using a file-syncing tool it is **essential** that you make sure that both +|app| and the file syncing tool do not try to access the |app| library at the +same time. In other words, **do not** run the file syncing tool and |app| at +the same time. + +Even with these tools there is danger of data corruption/loss, so only do this +if you are willing to live with that risk. In particular, be aware that +**Google Drive** is incompatible with |app|, if you put your |app| library in +Google Drive, **you will suffer data loss**. See `this thread +`_ for details. Content From The Web --------------------- diff --git a/recipes/adventure_zone_pl.recipe b/recipes/adventure_zone_pl.recipe index 00b4a8753e..50a980dc92 100644 --- a/recipes/adventure_zone_pl.recipe +++ b/recipes/adventure_zone_pl.recipe @@ -66,4 +66,3 @@ class Adventure_zone(BasicNewsRecipe): 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/am730.recipe b/recipes/am730.recipe new file mode 100644 index 0000000000..0fac4bea51 --- /dev/null +++ b/recipes/am730.recipe @@ -0,0 +1,290 @@ +# vim:fileencoding=UTF-8 +from __future__ import unicode_literals +__license__ = 'GPL v3' +__copyright__ = '2013, Eddie Lau' +__Date__ = '' +__HiResImg__ = True + +''' +Change Log: +2013/03/30 -- first version +''' + +from calibre import (__appname__, force_unicode, strftime) +from calibre.utils.date import now as nowf +import os, datetime, re +from calibre.web.feeds.recipes import BasicNewsRecipe +from contextlib import nested +from calibre.ebooks.BeautifulSoup import BeautifulSoup, Tag +from calibre.ebooks.metadata.opf2 import OPFCreator +from calibre.ebooks.metadata.toc import TOC +from calibre.ebooks.metadata import MetaInformation +from calibre.utils.localization import canonicalize_lang + +class AppleDaily(BasicNewsRecipe): + title = u'AM730' + __author__ = 'Eddie Lau' + publisher = 'AM730' + oldest_article = 1 + max_articles_per_feed = 100 + auto_cleanup = False + language = 'zh' + encoding = 'utf-8' + auto_cleanup = False + remove_javascript = True + use_embedded_content = False + no_stylesheets = True + description = 'http://www.am730.com.hk' + category = 'Chinese, News, Hong Kong' + masthead_url = 'http://www.am730.com.hk/images/logo.jpg' + + extra_css = 'img {display: block; margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px; max-height:90%;} div[id=articleHeader] {font-size:200%; text-align:left; font-weight:bold;} photocaption {font-size:50%; margin-left:auto; margin-right:auto;}' + keep_only_tags = [dict(name='div', attrs={'id':'articleHeader'}), + dict(name='div', attrs={'class':'thecontent wordsnap'}), + dict(name='a', attrs={'class':'lightboximg'})] + remove_tags = [dict(name='img', attrs={'src':'/images/am730_article_logo.jpg'}), + dict(name='img', attrs={'src':'/images/am_endmark.gif'})] + + def get_dtlocal(self): + dt_utc = datetime.datetime.utcnow() + # convert UTC to local hk time - at HKT 6am, all news are available + return dt_utc + datetime.timedelta(8.0/24) - datetime.timedelta(6.0/24) + + def get_fetchdate(self): + if __Date__ <> '': + return __Date__ + else: + return self.get_dtlocal().strftime("%Y%m%d") + + def get_fetchformatteddate(self): + if __Date__ <> '': + return __Date__[0:4]+'-'+__Date__[4:6]+'-'+__Date__[6:8] + else: + return self.get_dtlocal().strftime("%Y-%m-%d") + + def get_fetchyear(self): + if __Date__ <> '': + return __Date__[0:4] + else: + return self.get_dtlocal().strftime("%Y") + + def get_fetchmonth(self): + if __Date__ <> '': + return __Date__[4:6] + else: + return self.get_dtlocal().strftime("%m") + + def get_fetchday(self): + if __Date__ <> '': + 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 populate_article_metadata(self, article, soup, first): + if first and hasattr(self, 'add_toc_thumbnail'): + picdiv = soup.find('img') + if picdiv is not None: + self.add_toc_thumbnail(article,picdiv['src']) + + def parse_index(self): + feeds = [] + soup = self.index_to_soup('http://www.am730.com.hk/') + ul = soup.find(attrs={'class':'nav-section'}) + sectionList = [] + for li in ul.findAll('li'): + a = 'http://www.am730.com.hk/' + li.find('a', href=True).get('href', False) + title = li.find('a').get('title', False).strip() + sectionList.append((title, a)) + for title, url in sectionList: + articles = self.parse_section(url) + if articles: + feeds.append((title, articles)) + return feeds + + def parse_section(self, url): + soup = self.index_to_soup(url) + items = soup.findAll(attrs={'style':'padding-bottom: 15px;'}) + current_articles = [] + for item in items: + a = item.find(attrs={'class':'t6 f14'}).find('a', href=True) + articlelink = 'http://www.am730.com.hk/' + a.get('href', True) + title = self.tag_to_string(a) + description = self.tag_to_string(item.find(attrs={'class':'t3 f14'})) + current_articles.append({'title': title, 'url': articlelink, 'description': description}) + return current_articles + + def preprocess_html(self, soup): + multia = soup.findAll('a') + for a in multia: + if not (a == None): + image = a.find('img') + if not (image == None): + if __HiResImg__: + image['src'] = image.get('src').replace('/thumbs/', '/') + caption = image.get('alt') + tag = Tag(soup, "photo", []) + tag2 = Tag(soup, "photocaption", []) + tag.insert(0, image) + if not caption == None: + tag2.insert(0, caption) + tag.insert(1, tag2) + a.replaceWith(tag) + return soup + + def create_opf(self, feeds, dir=None): + if dir is None: + dir = self.output_dir + title = self.short_title() + if self.output_profile.periodical_date_in_title: + title += strftime(self.timefmt) + mi = MetaInformation(title, [__appname__]) + mi.publisher = __appname__ + mi.author_sort = __appname__ + if self.publication_type: + mi.publication_type = 'periodical:'+self.publication_type+':'+self.short_title() + mi.timestamp = nowf() + article_titles, aseen = [], set() + for f in feeds: + for a in f: + if a.title and a.title not in aseen: + aseen.add(a.title) + article_titles.append(force_unicode(a.title, 'utf-8')) + + mi.comments = self.description + if not isinstance(mi.comments, unicode): + mi.comments = mi.comments.decode('utf-8', 'replace') + mi.comments += ('\n\n' + _('Articles in this issue: ') + '\n' + + '\n\n'.join(article_titles)) + + language = canonicalize_lang(self.language) + if language is not None: + mi.language = language + # This one affects the pub date shown in kindle title + #mi.pubdate = nowf() + # now appears to need the time field to be > 12.00noon as well + mi.pubdate = datetime.datetime(int(self.get_fetchyear()), int(self.get_fetchmonth()), int(self.get_fetchday()), 12, 30, 0) + opf_path = os.path.join(dir, 'index.opf') + ncx_path = os.path.join(dir, 'index.ncx') + + opf = OPFCreator(dir, mi) + # Add mastheadImage entry to section + mp = getattr(self, 'masthead_path', None) + if mp is not None and os.access(mp, os.R_OK): + from calibre.ebooks.metadata.opf2 import Guide + ref = Guide.Reference(os.path.basename(self.masthead_path), os.getcwdu()) + ref.type = 'masthead' + ref.title = 'Masthead Image' + opf.guide.append(ref) + + manifest = [os.path.join(dir, 'feed_%d'%i) for i in range(len(feeds))] + manifest.append(os.path.join(dir, 'index.html')) + manifest.append(os.path.join(dir, 'index.ncx')) + + # Get cover + cpath = getattr(self, 'cover_path', None) + if cpath is None: + pf = open(os.path.join(dir, 'cover.jpg'), 'wb') + if self.default_cover(pf): + cpath = pf.name + if cpath is not None and os.access(cpath, os.R_OK): + opf.cover = cpath + manifest.append(cpath) + + # Get masthead + mpath = getattr(self, 'masthead_path', None) + if mpath is not None and os.access(mpath, os.R_OK): + manifest.append(mpath) + + opf.create_manifest_from_files_in(manifest) + for mani in opf.manifest: + if mani.path.endswith('.ncx'): + mani.id = 'ncx' + if mani.path.endswith('mastheadImage.jpg'): + mani.id = 'masthead-image' + + entries = ['index.html'] + toc = TOC(base_path=dir) + self.play_order_counter = 0 + self.play_order_map = {} + + + def feed_index(num, parent): + f = feeds[num] + for j, a in enumerate(f): + if getattr(a, 'downloaded', False): + adir = 'feed_%d/article_%d/'%(num, j) + auth = a.author + if not auth: + auth = None + desc = a.text_summary + if not desc: + desc = None + else: + desc = self.description_limiter(desc) + tt = a.toc_thumbnail if a.toc_thumbnail else None + entries.append('%sindex.html'%adir) + po = self.play_order_map.get(entries[-1], None) + if po is None: + self.play_order_counter += 1 + po = self.play_order_counter + parent.add_item('%sindex.html'%adir, None, + a.title if a.title else _('Untitled Article'), + play_order=po, author=auth, + description=desc, toc_thumbnail=tt) + last = os.path.join(self.output_dir, ('%sindex.html'%adir).replace('/', os.sep)) + for sp in a.sub_pages: + prefix = os.path.commonprefix([opf_path, sp]) + relp = sp[len(prefix):] + entries.append(relp.replace(os.sep, '/')) + last = sp + + if os.path.exists(last): + with open(last, 'rb') as fi: + src = fi.read().decode('utf-8') + soup = BeautifulSoup(src) + body = soup.find('body') + if body is not None: + prefix = '/'.join('..'for i in range(2*len(re.findall(r'link\d+', last)))) + templ = self.navbar.generate(True, num, j, len(f), + not self.has_single_feed, + a.orig_url, __appname__, prefix=prefix, + center=self.center_navbar) + elem = BeautifulSoup(templ.render(doctype='xhtml').decode('utf-8')).find('div') + body.insert(len(body.contents), elem) + with open(last, 'wb') as fi: + fi.write(unicode(soup).encode('utf-8')) + if len(feeds) == 0: + raise Exception('All feeds are empty, aborting.') + + if len(feeds) > 1: + for i, f in enumerate(feeds): + entries.append('feed_%d/index.html'%i) + po = self.play_order_map.get(entries[-1], None) + if po is None: + self.play_order_counter += 1 + po = self.play_order_counter + auth = getattr(f, 'author', None) + if not auth: + auth = None + desc = getattr(f, 'description', None) + if not desc: + desc = None + feed_index(i, toc.add_item('feed_%d/index.html'%i, None, + f.title, play_order=po, description=desc, author=auth)) + + else: + entries.append('feed_%d/index.html'%0) + feed_index(0, toc) + + for i, p in enumerate(entries): + entries[i] = os.path.join(dir, p.replace('/', os.sep)) + opf.create_spine(entries) + opf.set_toc(toc) + + with nested(open(opf_path, 'wb'), open(ncx_path, 'wb')) as (opf_file, ncx_file): + opf.render(opf_file, ncx_file) + diff --git a/recipes/apple_daily.recipe b/recipes/apple_daily.recipe index 763136c9b0..522427ed6a 100644 --- a/recipes/apple_daily.recipe +++ b/recipes/apple_daily.recipe @@ -1,161 +1,275 @@ -# -*- coding: utf-8 -*- -import re +# vim:fileencoding=UTF-8 +from __future__ import unicode_literals +__license__ = 'GPL v3' +__copyright__ = '2013, Eddie Lau' +__Date__ = '' + +from calibre import (__appname__, force_unicode, strftime) +from calibre.utils.date import now as nowf +import os, datetime, re from calibre.web.feeds.recipes import BasicNewsRecipe +from contextlib import nested +from calibre.ebooks.BeautifulSoup import BeautifulSoup +from calibre.ebooks.metadata.opf2 import OPFCreator +from calibre.ebooks.metadata.toc import TOC +from calibre.ebooks.metadata import MetaInformation +from calibre.utils.localization import canonicalize_lang class AppleDaily(BasicNewsRecipe): - - title = u'蘋果日報' - __author__ = u'蘋果日報' - __publisher__ = u'蘋果日報' - description = u'蘋果日報' - masthead_url = 'http://hk.apple.nextmedia.com/template/common/header/2009/images/atnextheader_logo_appledaily.gif' - language = 'zh_TW' - encoding = 'UTF-8' - timefmt = ' [%a, %d %b, %Y]' - needs_subscription = False + title = u'蘋果日報 (香港)' + __author__ = 'Eddie Lau' + publisher = '蘋果日報' + oldest_article = 1 + max_articles_per_feed = 100 + auto_cleanup = False + language = 'zh' + encoding = 'utf-8' + auto_cleanup = False remove_javascript = True - remove_tags_before = dict(name=['ul', 'h1']) - remove_tags_after = dict(name='form') - remove_tags = [dict(attrs={'class':['articleTools', 'post-tools', 'side_tool', 'nextArticleLink clearfix']}), - dict(id=['footer', 'toolsRight', 'articleInline', 'navigation', 'archive', 'side_search', 'blog_sidebar', 'side_tool', 'side_index']), - dict(name=['script', 'noscript', 'style', 'form'])] + use_embedded_content = False no_stylesheets = True - extra_css = ''' - @font-face {font-family: "uming", serif, sans-serif; src: url(res:///usr/share/fonts/truetype/arphic/uming.ttc); }\n - body {margin-right: 8pt; font-family: 'uming', serif;} - h1 {font-family: 'uming', serif, sans-serif} - ''' - #extra_css = 'h1 {font: sans-serif large;}\n.byline {font:monospace;}' + description = 'http://hkm.appledaily.com/' + category = 'Chinese, News, Hong Kong' + masthead_url = 'http://upload.wikimedia.org/wikipedia/zh/c/cf/AppleDailyLogo1.png' - preprocess_regexps = [ - (re.compile(r'img.php?server=(?P[^&]+)&path=(?P[^&]+).*', re.DOTALL|re.IGNORECASE), - lambda match: 'http://' + match.group('server') + '/' + match.group('path')), - ] + extra_css = 'img {display: block; margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px; max-height:90%;} h1 {font-size:200%; text-align:left; font-weight:bold;} p[class=video-caption] {font-size:50%; margin-left:auto; margin-right:auto;}' + keep_only_tags = [dict(name='div', attrs={'id':'content-article'})] + remove_tags = [dict(name='div', attrs={'class':'prev-next-btn'}), + dict(name='p', attrs={'class':'next'})] + + def get_dtlocal(self): + dt_utc = datetime.datetime.utcnow() + # convert UTC to local hk time - at HKT 6am, all news are available + return dt_utc + datetime.timedelta(8.0/24) - datetime.timedelta(6.0/24) + + def get_fetchdate(self): + if __Date__ <> '': + return __Date__ + else: + return self.get_dtlocal().strftime("%Y%m%d") + + def get_fetchformatteddate(self): + if __Date__ <> '': + return __Date__[0:4]+'-'+__Date__[4:6]+'-'+__Date__[6:8] + else: + return self.get_dtlocal().strftime("%Y-%m-%d") + + def get_fetchyear(self): + if __Date__ <> '': + return __Date__[0:4] + else: + return self.get_dtlocal().strftime("%Y") + + def get_fetchmonth(self): + if __Date__ <> '': + return __Date__[4:6] + else: + return self.get_dtlocal().strftime("%m") + + def get_fetchday(self): + if __Date__ <> '': + 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): - return 'http://hk.apple.nextmedia.com/template/common/header/2009/images/atnextheader_logo_appledaily.gif' - - - #def get_browser(self): - #br = BasicNewsRecipe.get_browser(self) - #if self.username is not None and self.password is not None: - # br.open('http://www.nytimes.com/auth/login') - # br.select_form(name='login') - # br['USERID'] = self.username - # br['PASSWORD'] = self.password - # br.submit() - #return br - - def preprocess_html(self, soup): - #process all the images - for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')): - iurl = tag['src'] - #print 'checking image: ' + iurl - - #img\.php?server\=(?P[^&]+)&path=(?P[^&]+) - p = re.compile(r'img\.php\?server=(?P[^&]+)&path=(?P[^&]+)', re.DOTALL|re.IGNORECASE) - - m = p.search(iurl) - - if m is not None: - iurl = 'http://' + m.group('server') + '/' + m.group('path') - #print 'working! new url: ' + iurl - tag['src'] = iurl - #else: - #print 'not good' - - for tag in soup.findAll(lambda tag: tag.name.lower()=='a' and tag.has_key('href')): - iurl = tag['href'] - #print 'checking image: ' + iurl - - #img\.php?server\=(?P[^&]+)&path=(?P[^&]+) - p = re.compile(r'img\.php\?server=(?P[^&]+)&path=(?P[^&]+)', re.DOTALL|re.IGNORECASE) - - m = p.search(iurl) - - if m is not None: - iurl = 'http://' + m.group('server') + '/' + m.group('path') - #print 'working! new url: ' + iurl - tag['href'] = iurl - #else: - #print 'not good' - - return soup + soup = self.index_to_soup('http://hkm.appledaily.com/') + cover = soup.find(attrs={'class':'top-news'}).get('src', False) + br = BasicNewsRecipe.get_browser(self) + try: + br.open(cover) + except: + cover = None + return cover + def populate_article_metadata(self, article, soup, first): + if first and hasattr(self, 'add_toc_thumbnail'): + picdiv = soup.find('img') + if picdiv is not None: + self.add_toc_thumbnail(article,picdiv['src']) def parse_index(self): - base = 'http://news.hotpot.hk/fruit' - soup = self.index_to_soup('http://news.hotpot.hk/fruit/index.php') + feeds = [] + soup = self.index_to_soup('http://hkm.appledaily.com/') + ul = soup.find(attrs={'class':'menu'}) + sectionList = [] + for li in ul.findAll('li'): + a = 'http://hkm.appledaily.com/' + li.find('a', href=True).get('href', False) + title = li.find('a', text=True).strip() + if not title == u'動新聞': + sectionList.append((title, a)) + for title, url in sectionList: + articles = self.parse_section(url) + if articles: + feeds.append((title, articles)) + return feeds - #def feed_title(div): - # return ''.join(div.findAll(text=True, recursive=False)).strip() + def parse_section(self, url): + soup = self.index_to_soup(url) + ul = soup.find(attrs={'class':'list'}) + current_articles = [] + for li in ul.findAll('li'): + a = li.find('a', href=True) + title = li.find('p', text=True).strip() + if a is not None: + current_articles.append({'title': title, 'url':'http://hkm.appledaily.com/' + a.get('href', False)}) + pass + return current_articles - articles = {} - key = None - ans = [] - for div in soup.findAll('li'): - key = div.find(text=True, recursive=True); - #if key == u'豪情': - # continue; + def create_opf(self, feeds, dir=None): + if dir is None: + dir = self.output_dir + title = self.short_title() + if self.output_profile.periodical_date_in_title: + title += strftime(self.timefmt) + mi = MetaInformation(title, [__appname__]) + mi.publisher = __appname__ + mi.author_sort = __appname__ + if self.publication_type: + mi.publication_type = 'periodical:'+self.publication_type+':'+self.short_title() + mi.timestamp = nowf() + article_titles, aseen = [], set() + for f in feeds: + for a in f: + if a.title and a.title not in aseen: + aseen.add(a.title) + article_titles.append(force_unicode(a.title, 'utf-8')) - print 'section=' + key + mi.comments = self.description + if not isinstance(mi.comments, unicode): + mi.comments = mi.comments.decode('utf-8', 'replace') + mi.comments += ('\n\n' + _('Articles in this issue: ') + '\n' + + '\n\n'.join(article_titles)) - articles[key] = [] + language = canonicalize_lang(self.language) + if language is not None: + mi.language = language + # This one affects the pub date shown in kindle title + #mi.pubdate = nowf() + # now appears to need the time field to be > 12.00noon as well + mi.pubdate = datetime.datetime(int(self.get_fetchyear()), int(self.get_fetchmonth()), int(self.get_fetchday()), 12, 30, 0) + opf_path = os.path.join(dir, 'index.opf') + ncx_path = os.path.join(dir, 'index.ncx') - ans.append(key) + opf = OPFCreator(dir, mi) + # Add mastheadImage entry to section + mp = getattr(self, 'masthead_path', None) + if mp is not None and os.access(mp, os.R_OK): + from calibre.ebooks.metadata.opf2 import Guide + ref = Guide.Reference(os.path.basename(self.masthead_path), os.getcwdu()) + ref.type = 'masthead' + ref.title = 'Masthead Image' + opf.guide.append(ref) - a = div.find('a', href=True) + manifest = [os.path.join(dir, 'feed_%d'%i) for i in range(len(feeds))] + manifest.append(os.path.join(dir, 'index.html')) + manifest.append(os.path.join(dir, 'index.ncx')) - if not a: - continue + # Get cover + cpath = getattr(self, 'cover_path', None) + if cpath is None: + pf = open(os.path.join(dir, 'cover.jpg'), 'wb') + if self.default_cover(pf): + cpath = pf.name + if cpath is not None and os.access(cpath, os.R_OK): + opf.cover = cpath + manifest.append(cpath) - url = base + '/' + a['href'] - print 'url=' + url + # Get masthead + mpath = getattr(self, 'masthead_path', None) + if mpath is not None and os.access(mpath, os.R_OK): + manifest.append(mpath) - if not articles.has_key(key): - articles[key] = [] - else: - # sub page - subSoup = self.index_to_soup(url) + opf.create_manifest_from_files_in(manifest) + for mani in opf.manifest: + if mani.path.endswith('.ncx'): + mani.id = 'ncx' + if mani.path.endswith('mastheadImage.jpg'): + mani.id = 'masthead-image' - for subDiv in subSoup.findAll('li'): - subA = subDiv.find('a', href=True) - subTitle = subDiv.find(text=True, recursive=True) - subUrl = base + '/' + subA['href'] - - print 'subUrl' + subUrl - - articles[key].append( - dict(title=subTitle, - url=subUrl, - date='', - description='', - content='')) + entries = ['index.html'] + toc = TOC(base_path=dir) + self.play_order_counter = 0 + self.play_order_map = {} -# elif div['class'] in ['story', 'story headline']: -# a = div.find('a', href=True) -# if not a: -# continue -# url = re.sub(r'\?.*', '', a['href']) -# url += '?pagewanted=all' -# title = self.tag_to_string(a, use_alt=True).strip() -# description = '' -# pubdate = strftime('%a, %d %b') -# summary = div.find(True, attrs={'class':'summary'}) -# if summary: -# description = self.tag_to_string(summary, use_alt=False) -# -# feed = key if key is not None else 'Uncategorized' -# if not articles.has_key(feed): -# articles[feed] = [] -# if not 'podcasts' in url: -# articles[feed].append( -# dict(title=title, url=url, date=pubdate, -# description=description, -# content='')) -# ans = self.sort_index_by(ans, {'The Front Page':-1, 'Dining In, Dining Out':1, 'Obituaries':2}) - ans = [(unicode(key), articles[key]) for key in ans if articles.has_key(key)] - return ans + def feed_index(num, parent): + f = feeds[num] + for j, a in enumerate(f): + if getattr(a, 'downloaded', False): + adir = 'feed_%d/article_%d/'%(num, j) + auth = a.author + if not auth: + auth = None + desc = a.text_summary + if not desc: + desc = None + else: + desc = self.description_limiter(desc) + tt = a.toc_thumbnail if a.toc_thumbnail else None + entries.append('%sindex.html'%adir) + po = self.play_order_map.get(entries[-1], None) + if po is None: + self.play_order_counter += 1 + po = self.play_order_counter + parent.add_item('%sindex.html'%adir, None, + a.title if a.title else _('Untitled Article'), + play_order=po, author=auth, + description=desc, toc_thumbnail=tt) + last = os.path.join(self.output_dir, ('%sindex.html'%adir).replace('/', os.sep)) + for sp in a.sub_pages: + prefix = os.path.commonprefix([opf_path, sp]) + relp = sp[len(prefix):] + entries.append(relp.replace(os.sep, '/')) + last = sp + if os.path.exists(last): + with open(last, 'rb') as fi: + src = fi.read().decode('utf-8') + soup = BeautifulSoup(src) + body = soup.find('body') + if body is not None: + prefix = '/'.join('..'for i in range(2*len(re.findall(r'link\d+', last)))) + templ = self.navbar.generate(True, num, j, len(f), + not self.has_single_feed, + a.orig_url, __appname__, prefix=prefix, + center=self.center_navbar) + elem = BeautifulSoup(templ.render(doctype='xhtml').decode('utf-8')).find('div') + body.insert(len(body.contents), elem) + with open(last, 'wb') as fi: + fi.write(unicode(soup).encode('utf-8')) + if len(feeds) == 0: + raise Exception('All feeds are empty, aborting.') + + if len(feeds) > 1: + for i, f in enumerate(feeds): + entries.append('feed_%d/index.html'%i) + po = self.play_order_map.get(entries[-1], None) + if po is None: + self.play_order_counter += 1 + po = self.play_order_counter + auth = getattr(f, 'author', None) + if not auth: + auth = None + desc = getattr(f, 'description', None) + if not desc: + desc = None + feed_index(i, toc.add_item('feed_%d/index.html'%i, None, + f.title, play_order=po, description=desc, author=auth)) + + else: + entries.append('feed_%d/index.html'%0) + feed_index(0, toc) + + for i, p in enumerate(entries): + entries[i] = os.path.join(dir, p.replace('/', os.sep)) + opf.create_spine(entries) + opf.set_toc(toc) + + with nested(open(opf_path, 'wb'), open(ncx_path, 'wb')) as (opf_file, ncx_file): + opf.render(opf_file, ncx_file) diff --git a/recipes/arret_sur_images.recipe b/recipes/arret_sur_images.recipe new file mode 100644 index 0000000000..fac2983231 --- /dev/null +++ b/recipes/arret_sur_images.recipe @@ -0,0 +1,54 @@ +from __future__ import unicode_literals + +__license__ = 'WTFPL' +__author__ = '2013, François D. ' +__description__ = 'Get some fresh news from Arrêt sur images' + + +from calibre.web.feeds.recipes import BasicNewsRecipe + +class Asi(BasicNewsRecipe): + + title = 'Arrêt sur images' + __author__ = 'François D. (aka franek)' + description = 'Global news in french from news site "Arrêt sur images"' + + oldest_article = 7.0 + language = 'fr' + needs_subscription = True + max_articles_per_feed = 100 + + simultaneous_downloads = 1 + timefmt = '[%a, %d %b %Y %I:%M +0200]' + cover_url = 'http://www.arretsurimages.net/images/header/menu/menu_1.png' + + use_embedded_content = False + no_stylesheets = True + remove_javascript = True + + feeds = [ + ('vite dit et gratuit', 'http://www.arretsurimages.net/vite-dit.rss'), + ('Toutes les chroniques', 'http://www.arretsurimages.net/chroniques.rss'), + ('Contenus et dossiers', 'http://www.arretsurimages.net/dossiers.rss'), + ] + + conversion_options = { 'smarten_punctuation' : True } + + remove_tags = [dict(id='vite-titre'), dict(id='header'), dict(id='wrap-connexion'), dict(id='col_right'), dict(name='div', attrs={'class':'bloc-chroniqueur-2'}), dict(id='footercontainer')] + + def print_version(self, url): + return url.replace('contenu.php', 'contenu-imprimable.php') + + def get_browser(self): + # Need to use robust HTML parser + br = BasicNewsRecipe.get_browser(self, use_robust_parser=True) + if self.username is not None and self.password is not None: + br.open('http://www.arretsurimages.net/index.php') + br.select_form(nr=0) + br.form.set_all_readonly(False) + br['redir'] = 'forum/login.php' + br['username'] = self.username + br['password'] = self.password + br.submit() + return br + diff --git a/recipes/astroflesz.recipe b/recipes/astroflesz.recipe index 11a56ec6b5..676aedfd3a 100644 --- a/recipes/astroflesz.recipe +++ b/recipes/astroflesz.recipe @@ -2,12 +2,12 @@ from calibre.web.feeds.news import BasicNewsRecipe class Astroflesz(BasicNewsRecipe): - title = u'Astroflesz' + title = u'Astroflesz' oldest_article = 7 - __author__ = 'fenuks' - description = u'astroflesz.pl - to portal poświęcony astronomii. Informuje zarówno o aktualnych wydarzeniach i odkryciach naukowych, jak również zapowiada ciekawe zjawiska astronomiczne' - category = 'astronomy' - language = 'pl' + __author__ = 'fenuks' + description = u'astroflesz.pl - to portal poświęcony astronomii. Informuje zarówno o aktualnych wydarzeniach i odkryciach naukowych, jak również zapowiada ciekawe zjawiska astronomiczne' + category = 'astronomy' + language = 'pl' cover_url = 'http://www.astroflesz.pl/templates/astroflesz/images/logo/logo.png' ignore_duplicate_articles = {'title', 'url'} max_articles_per_feed = 100 @@ -17,7 +17,7 @@ class Astroflesz(BasicNewsRecipe): keep_only_tags = [dict(id="k2Container")] remove_tags_after = dict(name='div', attrs={'class':'itemLinks'}) remove_tags = [dict(name='div', attrs={'class':['itemLinks', 'itemToolbar', 'itemRatingBlock']})] - feeds = [(u'Wszystkie', u'http://astroflesz.pl/?format=feed')] + feeds = [(u'Wszystkie', u'http://astroflesz.pl/?format=feed')] def postprocess_html(self, soup, first_fetch): t = soup.find(attrs={'class':'itemIntroText'}) diff --git a/recipes/badania_net.recipe b/recipes/badania_net.recipe index 01499f6369..c47e9b6f54 100644 --- a/recipes/badania_net.recipe +++ b/recipes/badania_net.recipe @@ -1,17 +1,20 @@ from calibre.web.feeds.news import BasicNewsRecipe +import re class BadaniaNet(BasicNewsRecipe): - title = u'badania.net' + title = u'badania.net' __author__ = 'fenuks' - description = u'chcesz wiedzieć więcej?' - category = 'science' - language = 'pl' + description = u'chcesz wiedzieć więcej?' + category = 'science' + language = 'pl' cover_url = 'http://badania.net/wp-content/badanianet_green_transparent.png' + extra_css = '.alignleft {float:left; margin-right:5px;} .alignright {float:right; margin-left:5px;}' oldest_article = 7 max_articles_per_feed = 100 no_stylesheets = True + preprocess_regexps = [(re.compile(r"

Tekst sponsoruje

", re.IGNORECASE), lambda m: ''),] remove_empty_feeds = True use_embedded_content = False remove_tags = [dict(attrs={'class':['omc-flex-category', 'omc-comment-count', 'omc-single-tags']})] remove_tags_after = dict(attrs={'class':'omc-single-tags'}) keep_only_tags = [dict(id='omc-full-article')] - feeds = [(u'Psychologia', u'http://badania.net/category/psychologia/feed/'), (u'Technologie', u'http://badania.net/category/technologie/feed/'), (u'Biologia', u'http://badania.net/category/biologia/feed/'), (u'Chemia', u'http://badania.net/category/chemia/feed/'), (u'Zdrowie', u'http://badania.net/category/zdrowie/'), (u'Seks', u'http://badania.net/category/psychologia-ewolucyjna-tematyka-seks/feed/')] + feeds = [(u'Psychologia', u'http://badania.net/category/psychologia/feed/'), (u'Technologie', u'http://badania.net/category/technologie/feed/'), (u'Biologia', u'http://badania.net/category/biologia/feed/'), (u'Chemia', u'http://badania.net/category/chemia/feed/'), (u'Zdrowie', u'http://badania.net/category/zdrowie/'), (u'Seks', u'http://badania.net/category/psychologia-ewolucyjna-tematyka-seks/feed/')] \ No newline at end of file diff --git a/recipes/birmingham_post.recipe b/recipes/birmingham_post.recipe index db2e29c821..86db7504fe 100644 --- a/recipes/birmingham_post.recipe +++ b/recipes/birmingham_post.recipe @@ -9,14 +9,14 @@ class AdvancedUserRecipe1306097511(BasicNewsRecipe): __author__ = 'Dave Asbury' cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/161987_9010212100_2035706408_n.jpg' oldest_article = 2 - max_articles_per_feed = 12 + max_articles_per_feed = 20 linearize_tables = True remove_empty_feeds = True remove_javascript = True no_stylesheets = True auto_cleanup = True language = 'en_GB' - + compress_news_images = True cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/161987_9010212100_2035706408_n.jpg' masthead_url = 'http://www.trinitymirror.com/images/birminghampost-logo.gif' diff --git a/recipes/bwmagazine.recipe b/recipes/bwmagazine.recipe index d11861ce08..ae3197da81 100644 --- a/recipes/bwmagazine.recipe +++ b/recipes/bwmagazine.recipe @@ -37,68 +37,15 @@ class BusinessWeek(BasicNewsRecipe): , 'language' : language } - #remove_tags = [ - #dict(attrs={'class':'inStory'}) - #,dict(name=['meta','link','iframe','base','embed','object','table','th','tr','td']) - #,dict(attrs={'id':['inset','videoDisplay']}) - #] - #keep_only_tags = [dict(name='div', attrs={'id':['story-body','storyBody']})] - remove_attributes = ['lang'] - match_regexps = [r'http://www.businessweek.com/.*_page_[1-9].*'] - feeds = [ - (u'Top Stories', u'http://www.businessweek.com/topStories/rss/topStories.rss'), - (u'Top News' , u'http://www.businessweek.com/rss/bwdaily.rss' ), - (u'Asia', u'http://www.businessweek.com/rss/asia.rss'), - (u'Autos', u'http://www.businessweek.com/rss/autos/index.rss'), - (u'Classic Cars', u'http://rss.businessweek.com/bw_rss/classiccars'), - (u'Hybrids', u'http://rss.businessweek.com/bw_rss/hybrids'), - (u'Europe', u'http://www.businessweek.com/rss/europe.rss'), - (u'Auto Reviews', u'http://rss.businessweek.com/bw_rss/autoreviews'), - (u'Innovation & Design', u'http://www.businessweek.com/rss/innovate.rss'), - (u'Architecture', u'http://www.businessweek.com/rss/architecture.rss'), - (u'Brand Equity', u'http://www.businessweek.com/rss/brandequity.rss'), - (u'Auto Design', u'http://www.businessweek.com/rss/carbuff.rss'), - (u'Game Room', u'http://rss.businessweek.com/bw_rss/gameroom'), - (u'Technology', u'http://www.businessweek.com/rss/technology.rss'), - (u'Investing', u'http://rss.businessweek.com/bw_rss/investor'), - (u'Small Business', u'http://www.businessweek.com/rss/smallbiz.rss'), - (u'Careers', u'http://rss.businessweek.com/bw_rss/careers'), - (u'B-Schools', u'http://www.businessweek.com/rss/bschools.rss'), - (u'Magazine Selections', u'http://www.businessweek.com/rss/magazine.rss'), - (u'CEO Guide to Tech', u'http://www.businessweek.com/rss/ceo_guide_tech.rss'), + (u'Top Stories', u'http://www.businessweek.com/feeds/most-popular.rss'), ] - def get_article_url(self, article): - url = article.get('guid', None) - if 'podcasts' in url: - return None - if 'surveys' in url: - return None - if 'images' in url: - return None - if 'feedroom' in url: - return None - if '/magazine/toc/' in url: - return None - rurl, sep, rest = url.rpartition('?') - if rurl: - return rurl - return rest - def print_version(self, url): - if '/news/' in url or '/blog/ in url': - return url - rurl = url.replace('http://www.businessweek.com/','http://www.businessweek.com/print/') - return rurl.replace('/investing/','/investor/') + soup = self.index_to_soup(url) + prntver = soup.find('li', attrs={'class':'print tracked'}) + rurl = prntver.find('a', href=True)['href'] + return rurl + - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - for alink in soup.findAll('a'): - if alink.string is not None: - tstr = alink.string - alink.replaceWith(tstr) - return soup - diff --git a/recipes/bwmagazine2.recipe b/recipes/bwmagazine2.recipe index 608c046d07..d02efc2861 100644 --- a/recipes/bwmagazine2.recipe +++ b/recipes/bwmagazine2.recipe @@ -1,3 +1,4 @@ +import re from calibre.web.feeds.recipes import BasicNewsRecipe from collections import OrderedDict @@ -39,7 +40,7 @@ class BusinessWeekMagazine(BasicNewsRecipe): title=self.tag_to_string(div.a).strip() url=div.a['href'] soup0 = self.index_to_soup(url) - urlprint=soup0.find('li', attrs={'class':'print tracked'}).a['href'] + urlprint=soup0.find('a', attrs={'href':re.compile('.*printer.*')})['href'] articles.append({'title':title, 'url':urlprint, 'description':'', 'date':''}) @@ -56,7 +57,7 @@ class BusinessWeekMagazine(BasicNewsRecipe): title=self.tag_to_string(div.a).strip() url=div.a['href'] soup0 = self.index_to_soup(url) - urlprint=soup0.find('li', attrs={'class':'print tracked'}).a['href'] + urlprint=soup0.find('a', attrs={'href':re.compile('.*printer.*')})['href'] articles.append({'title':title, 'url':urlprint, 'description':desc, 'date':''}) if articles: diff --git a/recipes/countryfile.recipe b/recipes/countryfile.recipe index 86769b78cd..717f81afce 100644 --- a/recipes/countryfile.recipe +++ b/recipes/countryfile.recipe @@ -7,13 +7,14 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe): #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 8/12/12 + # last updated 19/10/12 language = 'en_GB' oldest_article = 30 max_articles_per_feed = 25 remove_empty_feeds = True no_stylesheets = True auto_cleanup = True + compress_news_images = True ignore_duplicate_articles = {'title', 'url'} #articles_are_obfuscated = True #article_already_exists = False diff --git a/recipes/daily_mirror.recipe b/recipes/daily_mirror.recipe index bff337bcf7..91a274ab8c 100644 --- a/recipes/daily_mirror.recipe +++ b/recipes/daily_mirror.recipe @@ -13,9 +13,9 @@ class AdvancedUserRecipe1306061239(BasicNewsRecipe): masthead_url = 'http://www.nmauk.co.uk/nma/images/daily_mirror.gif' - + compress_news_images = True oldest_article = 1 - max_articles_per_feed = 1 + max_articles_per_feed = 12 remove_empty_feeds = True remove_javascript = True no_stylesheets = True diff --git a/recipes/diario_de_noticias.recipe b/recipes/diario_de_noticias.recipe new file mode 100644 index 0000000000..4ba7c6f7e5 --- /dev/null +++ b/recipes/diario_de_noticias.recipe @@ -0,0 +1,23 @@ +# vim:fileencoding=UTF-8 + +from __future__ import unicode_literals +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1365070687(BasicNewsRecipe): + title ='Diário de Notícias' + oldest_article = 7 + language = 'pt' + __author__ = 'Jose Pinto' + max_articles_per_feed = 100 + keep_only_tags = [dict(name='div', attrs={'id':'cln-esqmid'}) ] + remove_tags = [ dict(name='table', attrs={'class':'TabFerramentasInf'}) ] + + feeds = [(u'Portugal', u'http://feeds.dn.pt/DN-Portugal'), + (u'Globo', u'http://feeds.dn.pt/DN-Globo'), + (u'Economia', u'http://feeds.dn.pt/DN-Economia'), + (u'Ci\xeancia', u'http://feeds.dn.pt/DN-Ciencia'), + (u'Artes', u'http://feeds.dn.pt/DN-Artes'), + (u'TV & Media', u'http://feeds.dn.pt/DN-Media'), + (u'Opini\xe3o', u'http://feeds.dn.pt/DN-Opiniao'), + (u'Pessoas', u'http://feeds.dn.pt/DN-Pessoas') + ] diff --git a/recipes/dzial_zagraniczny.recipe b/recipes/dzial_zagraniczny.recipe new file mode 100644 index 0000000000..1b8453dd40 --- /dev/null +++ b/recipes/dzial_zagraniczny.recipe @@ -0,0 +1,27 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__author__ = 'teepel ' + +''' +dzialzagraniczny.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class dzial_zagraniczny(BasicNewsRecipe): + title = u'Dział Zagraniczny' + __author__ = 'teepel ' + language = 'pl' + description = u'Polskiego czytelnika to nie interesuje' + INDEX = 'http://dzialzagraniczny.pl' + extra_css = 'img {display: block;}' + oldest_article = 7 + cover_url = 'https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/c145.5.160.160/559442_415653975115959_2126205128_n.jpg' + max_articles_per_feed = 100 + remove_empty_feeds = True + remove_javascript = True + no_stylesheets = True + use_embedded_content = True + + feeds = [(u'Dział zagraniczny', u'http://feeds.feedburner.com/dyndns/UOfz')] diff --git a/recipes/economia.recipe b/recipes/economia.recipe new file mode 100644 index 0000000000..249125b76f --- /dev/null +++ b/recipes/economia.recipe @@ -0,0 +1,17 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1314326622(BasicNewsRecipe): + title = u'Economia' + __author__ = 'Manish Bhattarai' + description = 'Economia - Intelligence & Insight for ICAEW Members' + language = 'en_GB' + oldest_article = 7 + max_articles_per_feed = 25 + masthead_url = 'http://economia.icaew.com/~/media/Images/Design%20Images/Economia_Red_website.ashx' + cover_url = 'http://economia.icaew.com/~/media/Images/Design%20Images/Economia_Red_website.ashx' + no_stylesheets = True + remove_empty_feeds = True + remove_tags_before = dict(id='content') + remove_tags_after = dict(id='stars-wrapper') + remove_tags = [dict(attrs={'class':['floatR', 'sharethis', 'rating clearfix']})] + feeds = [(u'News', u'http://feedity.com/icaew-com/VlNTVFRa.rss'),(u'Business', u'http://feedity.com/icaew-com/VlNTVFtS.rss'),(u'People', u'http://feedity.com/icaew-com/VlNTVFtX.rss'),(u'Opinion', u'http://feedity.com/icaew-com/VlNTVFtW.rss'),(u'Finance', u'http://feedity.com/icaew-com/VlNTVFtV.rss')] diff --git a/recipes/el_diplo.recipe b/recipes/el_diplo.recipe index b9ef8268e1..7827cbbdd7 100644 --- a/recipes/el_diplo.recipe +++ b/recipes/el_diplo.recipe @@ -26,7 +26,7 @@ class ElDiplo_Recipe(BasicNewsRecipe): title = u'El Diplo' __author__ = 'Tomas Di Domenico' description = 'Publicacion mensual de Le Monde Diplomatique, edicion Argentina' - langauge = 'es_AR' + language = 'es_AR' needs_subscription = True auto_cleanup = True diff --git a/recipes/equipped.recipe b/recipes/equipped.recipe new file mode 100644 index 0000000000..af74c10523 --- /dev/null +++ b/recipes/equipped.recipe @@ -0,0 +1,29 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__author__ = 'teepel , Artur Stachecki ' + +''' +equipped.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe +class equipped(BasicNewsRecipe): + title = u'Equipped' + __author__ = 'teepel ' + language = 'pl' + description = u'Wiadomości z equipped.pl' + INDEX = 'http://equipped.pl' + extra_css = '.alignleft {float:left; margin-right:5px;}' + oldest_article = 7 + max_articles_per_feed = 100 + remove_empty_feeds = True + simultaneous_downloads = 5 + remove_javascript = True + no_stylesheets = True + use_embedded_content = False + #keep_only_tags = [dict(name='article')] + #remove_tags = [dict(id='disqus_thread')] + #remove_tags_after = [dict(id='disqus_thread')] + + feeds = [(u'Equipped', u'http://feeds.feedburner.com/Equippedpl?format=xml')] diff --git a/recipes/esensja_(rss).recipe b/recipes/esensja_(rss).recipe index af23ea58a9..0afa2b0d07 100644 --- a/recipes/esensja_(rss).recipe +++ b/recipes/esensja_(rss).recipe @@ -12,12 +12,6 @@ class EsensjaRSS(BasicNewsRecipe): language = 'pl' encoding = 'utf-8' INDEX = 'http://www.esensja.pl' - extra_css = '''.t-title {font-size: x-large; font-weight: bold; text-align: left} - .t-author {font-size: x-small; text-align: left} - .t-title2 {font-size: x-small; font-style: italic; text-align: left} - .text {font-size: small; text-align: left} - .annot-ref {font-style: italic; text-align: left} - ''' cover_url = '' masthead_url = 'http://esensja.pl/img/wrss.gif' use_embedded_content = False diff --git a/recipes/film_org_pl.recipe b/recipes/film_org_pl.recipe index fa0a69912b..4d4ba23e88 100644 --- a/recipes/film_org_pl.recipe +++ b/recipes/film_org_pl.recipe @@ -1,20 +1,54 @@ # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:fdm=marker:ai from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ebooks.BeautifulSoup import Comment import re class FilmOrgPl(BasicNewsRecipe): - title = u'Film.org.pl' - __author__ = 'fenuks' - description = u"Recenzje, analizy, artykuły, rankingi - wszystko o filmie dla miłośników kina. Opisy efektów specjalnych, wersji reżyserskich, remake'ów, sequeli. No i forum filmowe. Jedne z największych w Polsce." - category = 'film' - language = 'pl' - extra_css = '.alignright {float:right; margin-left:5px;} .alignleft {float:left; margin-right:5px;}' + title = u'Film.org.pl' + __author__ = 'fenuks' + description = u"Recenzje, analizy, artykuły, rankingi - wszystko o filmie dla miłośników kina. Opisy efektów specjalnych, wersji reżyserskich, remake'ów, sequeli. No i forum filmowe. Jedne z największych w Polsce." + category = 'film' + language = 'pl' + extra_css = '.alignright {float:right; margin-left:5px;} .alignleft {float:left; margin-right:5px;} .recenzja-title {font-size: 150%; margin-top: 5px; margin-bottom: 5px;}' cover_url = 'http://film.org.pl/wp-content/themes/KMF/images/logo_kmf10.png' ignore_duplicate_articles = {'title', 'url'} oldest_article = 7 max_articles_per_feed = 100 no_stylesheets = True + remove_javascript = True remove_empty_feeds = True - use_embedded_content = True - preprocess_regexps = [(re.compile(ur'

Przeczytaj także:

.*', re.IGNORECASE|re.DOTALL), lambda m: ''), (re.compile(ur'
Artykuł
', re.IGNORECASE), lambda m: ''), (re.compile(ur'
Ludzie filmu
', re.IGNORECASE), lambda m: '')] - remove_tags = [dict(name='img', attrs={'alt':['Ludzie filmu', u'Artykuł']})] - feeds = [(u'Recenzje', u'http://film.org.pl/r/recenzje/feed/'), (u'Artyku\u0142', u'http://film.org.pl/a/artykul/feed/'), (u'Analiza', u'http://film.org.pl/a/analiza/feed/'), (u'Ranking', u'http://film.org.pl/a/ranking/feed/'), (u'Blog', u'http://film.org.pl/kmf/blog/feed/'), (u'Ludzie', u'http://film.org.pl/a/ludzie/feed/'), (u'Seriale', u'http://film.org.pl/a/seriale/feed/'), (u'Oceanarium', u'http://film.org.pl/a/ocenarium/feed/'), (u'VHS', u'http://film.org.pl/a/vhs-a/feed/')] + use_embedded_content = False + remove_attributes = ['style'] + preprocess_regexps = [(re.compile(ur'

Przeczytaj także:

.*', re.IGNORECASE|re.DOTALL), lambda m: ''), (re.compile(ur'', re.IGNORECASE|re.DOTALL), lambda m: ''), (re.compile(ur'
Artykuł
', re.IGNORECASE), lambda m: ''), (re.compile(ur'
Ludzie filmu
', re.IGNORECASE), lambda m: ''), (re.compile(ur'(
\s*?){2,}', re.IGNORECASE|re.DOTALL), lambda m: '')] + keep_only_tags = [dict(name=['h11', 'h16', 'h17']), dict(attrs={'class':'editor'})] + remove_tags_after = dict(id='comments') + remove_tags = [dict(name=['link', 'meta', 'style']), dict(name='img', attrs={'alt':['Ludzie filmu', u'Artykuł']}), dict(id='comments'), dict(attrs={'style':'border: 0pt none ; margin: 0pt; padding: 0pt;'}), dict(name='p', attrs={'class':'rating'}), dict(attrs={'layout':'button_count'})] + feeds = [(u'Recenzje', u'http://film.org.pl/r/recenzje/feed/'), (u'Artyku\u0142', u'http://film.org.pl/a/artykul/feed/'), (u'Analiza', u'http://film.org.pl/a/analiza/feed/'), (u'Ranking', u'http://film.org.pl/a/ranking/feed/'), (u'Blog', u'http://film.org.pl/kmf/blog/feed/'), (u'Ludzie', u'http://film.org.pl/a/ludzie/feed/'), (u'Seriale', u'http://film.org.pl/a/seriale/feed/'), (u'Oceanarium', u'http://film.org.pl/a/ocenarium/feed/'), (u'VHS', u'http://film.org.pl/a/vhs-a/feed/')] + + def append_page(self, soup, appendtag): + tag = soup.find('div', attrs={'class': 'pagelink'}) + if tag: + for nexturl in tag.findAll('a'): + url = nexturl['href'] + soup2 = self.index_to_soup(url) + pagetext = soup2.find(attrs={'class': 'editor'}) + comments = pagetext.findAll(text=lambda text:isinstance(text, Comment)) + for comment in comments: + comment.extract() + pos = len(appendtag.contents) + appendtag.insert(pos, pagetext) + for r in appendtag.findAll(attrs={'class': 'pagelink'}): + r.extract() + for r in appendtag.findAll(attrs={'id': 'comments'}): + r.extract() + for r in appendtag.findAll(attrs={'style':'border: 0pt none ; margin: 0pt; padding: 0pt;'}): + r.extract() + for r in appendtag.findAll(attrs={'layout':'button_count'}): + r.extract() + + def preprocess_html(self, soup): + for c in soup.findAll('h11'): + c.name = 'h1' + self.append_page(soup, soup.body) + for r in soup.findAll('br'): + r.extract() + return soup \ No newline at end of file diff --git a/recipes/financial_times_uk.recipe b/recipes/financial_times_uk.recipe index f7a63fbb18..8105a9777f 100644 --- a/recipes/financial_times_uk.recipe +++ b/recipes/financial_times_uk.recipe @@ -8,6 +8,7 @@ import datetime from calibre.ptempfile import PersistentTemporaryFile from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe +from collections import OrderedDict class FinancialTimes(BasicNewsRecipe): title = 'Financial Times (UK)' @@ -93,7 +94,7 @@ class FinancialTimes(BasicNewsRecipe): try: urlverified = self.browser.open_novisit(url).geturl() # resolve redirect. except: - continue + continue title = self.tag_to_string(item) date = strftime(self.timefmt) articles.append({ @@ -105,29 +106,30 @@ class FinancialTimes(BasicNewsRecipe): return articles def parse_index(self): - feeds = [] + feeds = OrderedDict() soup = self.index_to_soup(self.INDEX) - dates= self.tag_to_string(soup.find('div', attrs={'class':'btm-links'}).find('div')) - self.timefmt = ' [%s]'%dates - wide = soup.find('div',attrs={'class':'wide'}) - if not wide: - return feeds - allsections = wide.findAll(attrs={'class':lambda x: x and 'footwell' in x.split()}) - if not allsections: - return feeds - count = 0 - for item in allsections: - count = count + 1 - if self.test and count > 2: - return feeds - fitem = item.h3 - if not fitem: - fitem = item.h4 - ftitle = self.tag_to_string(fitem) - self.report_progress(0, _('Fetching feed')+' %s...'%(ftitle)) - feedarts = self.get_artlinks(item.ul) - feeds.append((ftitle,feedarts)) - return feeds + #dates= self.tag_to_string(soup.find('div', attrs={'class':'btm-links'}).find('div')) + #self.timefmt = ' [%s]'%dates + section_title = 'Untitled' + + for column in soup.findAll('div', attrs = {'class':'feedBoxes clearfix'}): + for section in column. findAll('div', attrs = {'class':'feedBox'}): + sectiontitle=self.tag_to_string(section.find('h4')) + if '...' not in sectiontitle: section_title=sectiontitle + for article in section.ul.findAll('li'): + articles = [] + title=self.tag_to_string(article.a) + url=article.a['href'] + articles.append({'title':title, 'url':url, 'description':'', 'date':''}) + + if articles: + if section_title not in feeds: + feeds[section_title] = [] + feeds[section_title] += articles + + + ans = [(key, val) for key, val in feeds.iteritems()] + return ans def preprocess_html(self, soup): items = ['promo-box','promo-title', @@ -174,9 +176,6 @@ class FinancialTimes(BasicNewsRecipe): count += 1 tfile = PersistentTemporaryFile('_fa.html') tfile.write(html) - tfile.close() + tfile.close() self.temp_files.append(tfile) return tfile.name - - def cleanup(self): - self.browser.open('https://registration.ft.com/registration/login/logout?location=') \ No newline at end of file diff --git a/recipes/focus_pl.recipe b/recipes/focus_pl.recipe index 66864b8561..bac16ebbd5 100644 --- a/recipes/focus_pl.recipe +++ b/recipes/focus_pl.recipe @@ -1,12 +1,12 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' + import re - from calibre.web.feeds.news import BasicNewsRecipe - class FocusRecipe(BasicNewsRecipe): - __license__ = 'GPL v3' - __author__ = u'intromatyk ' + __author__ = u'Artur Stachecki ' language = 'pl' version = 1 diff --git a/recipes/forbes_pl.recipe b/recipes/forbes_pl.recipe new file mode 100644 index 0000000000..b794fc5fa1 --- /dev/null +++ b/recipes/forbes_pl.recipe @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' + +from calibre.web.feeds.news import BasicNewsRecipe +import datetime +import re + +class forbes_pl(BasicNewsRecipe): + title = u'Forbes.pl' + __author__ = 'Artur Stachecki ' + language = 'pl' + description = u'Biznes, finanse, gospodarka, strategie, wiadomości gospodarcze, analizy finasowe i strategiczne.' + oldest_article = 1 + index = 'http://www.forbes.pl' + cover_url = 'http://www.forbes.pl/resources/front/images/logo.png' + max_articles_per_feed = 100 + extra_css = '.Block-Photo {float:left; max-width: 300px; margin-right: 5px;}' + preprocess_regexps = [(re.compile(ur'

()?(Czytaj|Zobacz) (też|także):.*?

', re.DOTALL), lambda match: ''), (re.compile(ur'Zobacz:.*?', re.DOTALL), lambda match: '')] + remove_javascript = True + no_stylesheets = True + now = datetime.datetime.now() + yesterday = now - datetime.timedelta(hours=24) + yesterday = yesterday.strftime("%d.%m.%Y %H:%M:%S") + pages_count = 4 + keep_only_tags = [dict(attrs={'class':['Block-Node Content-Article ', 'Block-Node Content-Article piano-closed']})] + remove_tags = [dict(attrs={'class':['Keywords Styled', 'twitter-share-button', 'Block-List-Related Block-List']})] + + feeds = [(u'Wszystkie', 'http://www.forbes.pl/rss')] + + '''def preprocess_html(self, soup): + self.append_page(soup, soup.body) + return soup + + + def append_page(self, soup, appendtag): + cleanup = False + nexturl = appendtag.find('a', attrs={'class':'next'}) + if nexturl: + cleanup = True + while nexturl: + soup2 = self.index_to_soup(self.index + nexturl['href']) + nexturl = soup2.find('a', attrs={'class':'next'}) + pagetext = soup2.findAll(id='article-body-wrapper') + if not pagetext: + pagetext = soup2.findAll(attrs={'class':'Article-Entry Styled'}) + for comment in pagetext.findAll(text=lambda text:isinstance(text, Comment)): + comment.extract() + pos = len(appendtag.contents) + appendtag.insert(pos, pagetext) + if cleanup: + for r in appendtag.findAll(attrs={'class':'paginator'}): + r.extract()''' diff --git a/recipes/fronda.recipe b/recipes/fronda.recipe index 6ed5d052a3..8372bb4d81 100644 --- a/recipes/fronda.recipe +++ b/recipes/fronda.recipe @@ -6,6 +6,7 @@ __copyright__ = u'2010-2013, Tomasz Dlugosz ' fronda.pl ''' +import re from calibre.web.feeds.news import BasicNewsRecipe from datetime import timedelta, date @@ -23,6 +24,7 @@ class Fronda(BasicNewsRecipe): extra_css = ''' h1 {font-size:150%} .body {text-align:left;} + div#featured-image {font-style:italic; font-size:70%} ''' earliest_date = date.today() - timedelta(days=oldest_article) @@ -55,7 +57,10 @@ class Fronda(BasicNewsRecipe): articles = {} for url, genName in genres: - soup = self.index_to_soup('http://www.fronda.pl/c/'+ url) + try: + soup = self.index_to_soup('http://www.fronda.pl/c/'+ url) + except: + continue articles[genName] = [] for item in soup.findAll('li'): article_h = item.find('h2') @@ -77,16 +82,15 @@ class Fronda(BasicNewsRecipe): ] remove_tags = [ - dict(name='div', attrs={'class':['related-articles', - 'button right', - 'pagination']}), + dict(name='div', attrs={'class':['related-articles','button right','pagination','related-articles content']}), dict(name='h3', attrs={'class':'block-header article comments'}), - dict(name='ul', attrs={'class':'comment-list'}), - dict(name='ul', attrs={'class':'category'}), - dict(name='ul', attrs={'class':'tag-list'}), + dict(name='ul', attrs={'class':['comment-list','category','tag-list']}), dict(name='p', attrs={'id':'comments-disclaimer'}), dict(name='div', attrs={'style':'text-align: left; margin-bottom: 15px;'}), dict(name='div', attrs={'style':'text-align: left; margin-top: 15px; margin-bottom: 30px;'}), - dict(name='div', attrs={'class':'related-articles content'}), - dict(name='div', attrs={'id':'comment-form'}) + dict(name='div', attrs={'id':'comment-form'}), + dict(name='span', attrs={'class':'separator'}) ] + + preprocess_regexps = [ + (re.compile(r'komentarzy: .*?', re.IGNORECASE | re.DOTALL | re.M ), lambda match: '')] diff --git a/recipes/galaxys_edge.recipe b/recipes/galaxys_edge.recipe new file mode 100644 index 0000000000..e6e1dd7475 --- /dev/null +++ b/recipes/galaxys_edge.recipe @@ -0,0 +1,108 @@ +from __future__ import with_statement +__license__ = 'GPL 3' +__copyright__ = '2009, Kovid Goyal ' + +from calibre.web.feeds.news import BasicNewsRecipe + +class GalaxyEdge(BasicNewsRecipe): + title = u'The Galaxy\'s Edge' + language = 'en' + + oldest_article = 7 + __author__ = 'Krittika Goyal' + no_stylesheets = True + + auto_cleanup = True + + #keep_only_tags = [dict(id='content')] + #remove_tags = [dict(attrs={'class':['article-links', 'breadcr']}), + #dict(id=['email-section', 'right-column', 'printfooter', 'topover', + #'slidebox', 'th_footer'])] + + extra_css = '.photo-caption { font-size: smaller }' + + def parse_index(self): + soup = self.index_to_soup('http://www.galaxysedge.com/') + main = soup.find('table', attrs={'width':'911'}) + toc = main.find('td', attrs={'width':'225'}) + + + + current_section = None + current_articles = [] + feeds = [] + c = 0 + for x in toc.findAll(['p']): + c = c+1 + if c == 5: + if current_articles and current_section: + feeds.append((current_section, current_articles)) + edwo = x.find('a') + current_section = self.tag_to_string(edwo) + current_articles = [] + self.log('\tFound section:', current_section) + title = self.tag_to_string(edwo) + url = edwo.get('href', True) + url = 'http://www.galaxysedge.com/'+url + print(title) + print(c) + if not url or not title: + continue + self.log('\t\tFound article:', title) + self.log('\t\t\t', url) + current_articles.append({'title': title, 'url':url, + 'description':'', 'date':''}) + elif c>5: + current_section = self.tag_to_string(x.find('b')) + current_articles = [] + self.log('\tFound section:', current_section) + for y in x.findAll('a'): + title = self.tag_to_string(y) + url = y.get('href', True) + url = 'http://www.galaxysedge.com/'+url + print(title) + if not url or not title: + continue + self.log('\t\tFound article:', title) + self.log('\t\t\t', url) + current_articles.append({'title': title, 'url':url, + 'description':'', 'date':''}) + if current_articles and current_section: + feeds.append((current_section, current_articles)) + + return feeds + + + + + #def preprocess_raw_html(self, raw, url): + #return raw.replace('

', '

').replace('

', '

') + + #def postprocess_html(self, soup, first_fetch): + #for t in soup.findAll(['table', 'tr', 'td','center']): + #t.name = 'div' + #return soup + + #def parse_index(self): + #today = time.strftime('%Y-%m-%d') + #soup = self.index_to_soup( + #'http://www.thehindu.com/todays-paper/tp-index/?date=' + today) + #div = soup.find(id='left-column') + #feeds = [] + #current_section = None + #current_articles = [] + #for x in div.findAll(['h3', 'div']): + #if current_section and x.get('class', '') == 'tpaper': + #a = x.find('a', href=True) + #if a is not None: + #current_articles.append({'url':a['href']+'?css=print', + #'title':self.tag_to_string(a), 'date': '', + #'description':''}) + #if x.name == 'h3': + #if current_section and current_articles: + #feeds.append((current_section, current_articles)) + #current_section = self.tag_to_string(x) + #current_articles = [] + #return feeds + + diff --git a/recipes/gazeta-prawna-calibre-v1.recipe b/recipes/gazeta-prawna-calibre-v1.recipe index 293aa05b0d..f7d2c4935b 100644 --- a/recipes/gazeta-prawna-calibre-v1.recipe +++ b/recipes/gazeta-prawna-calibre-v1.recipe @@ -14,13 +14,14 @@ class gazetaprawna(BasicNewsRecipe): title = u'Gazeta Prawna' __author__ = u'Vroo' publisher = u'Infor Biznes' - oldest_article = 7 + oldest_article = 1 max_articles_per_feed = 20 no_stylesheets = True remove_javascript = True description = 'Polski dziennik gospodarczy' language = 'pl' encoding = 'utf-8' + ignore_duplicate_articles = {'title', 'url'} remove_tags_after = [ dict(name='div', attrs={'class':['data-art']}) @@ -30,7 +31,7 @@ class gazetaprawna(BasicNewsRecipe): ] feeds = [ - (u'Wiadomo\u015bci - najwa\u017cniejsze', u'http://www.gazetaprawna.pl/wiadomosci/najwazniejsze/rss.xml'), + (u'Z ostatniej chwili', u'http://rss.gazetaprawna.pl/GazetaPrawna'), (u'Biznes i prawo gospodarcze', u'http://biznes.gazetaprawna.pl/rss.xml'), (u'Prawo i wymiar sprawiedliwo\u015bci', u'http://prawo.gazetaprawna.pl/rss.xml'), (u'Praca i ubezpieczenia', u'http://praca.gazetaprawna.pl/rss.xml'), @@ -51,3 +52,8 @@ class gazetaprawna(BasicNewsRecipe): url = url.replace('prawo.gazetaprawna', 'www.gazetaprawna') url = url.replace('praca.gazetaprawna', 'www.gazetaprawna') return url + + def get_cover_url(self): + soup = self.index_to_soup('http://www.egazety.pl/infor/e-wydanie-dziennik-gazeta-prawna.html') + self.cover_url = soup.find('p', attrs={'class':'covr'}).a['href'] + return getattr(self, 'cover_url', self.cover_url) diff --git a/recipes/gazeta_pl_krakow.recipe b/recipes/gazeta_pl_krakow.recipe index 59b3b00933..0f7633e4b2 100644 --- a/recipes/gazeta_pl_krakow.recipe +++ b/recipes/gazeta_pl_krakow.recipe @@ -10,7 +10,7 @@ krakow.gazeta.pl from calibre.web.feeds.news import BasicNewsRecipe class gw_krakow(BasicNewsRecipe): - title = u'Gazeta.pl Kraków' + title = u'Gazeta Wyborcza Kraków' __author__ = 'teepel based on GW from fenuks' language = 'pl' description =u'Wiadomości z Krakowa na portalu Gazeta.pl.' diff --git a/recipes/gazeta_pl_szczecin.recipe b/recipes/gazeta_pl_szczecin.recipe index af229c5721..501b25dfe5 100644 --- a/recipes/gazeta_pl_szczecin.recipe +++ b/recipes/gazeta_pl_szczecin.recipe @@ -5,7 +5,7 @@ import string from calibre.web.feeds.news import BasicNewsRecipe class GazetaPlSzczecin(BasicNewsRecipe): - title = u'Gazeta.pl Szczecin' + title = u'Gazeta Wyborcza Szczecin' description = u'Wiadomości ze Szczecina na portalu Gazeta.pl.' __author__ = u'Michał Szkutnik' __license__ = u'GPL v3' diff --git a/recipes/gazeta_pl_warszawa.recipe b/recipes/gazeta_pl_warszawa.recipe index 9e10a0610c..6a37a96885 100644 --- a/recipes/gazeta_pl_warszawa.recipe +++ b/recipes/gazeta_pl_warszawa.recipe @@ -10,7 +10,7 @@ warszawa.gazeta.pl from calibre.web.feeds.news import BasicNewsRecipe class gw_wawa(BasicNewsRecipe): - title = u'Gazeta.pl Warszawa' + title = u'Gazeta Wyborcza Warszawa' __author__ = 'teepel based on GW from fenuks' language = 'pl' description ='Wiadomości z Warszawy na portalu Gazeta.pl.' diff --git a/recipes/gazeta_wyborcza.recipe b/recipes/gazeta_wyborcza.recipe index c415edc9d0..310077cdec 100644 --- a/recipes/gazeta_wyborcza.recipe +++ b/recipes/gazeta_wyborcza.recipe @@ -3,7 +3,7 @@ from calibre.web.feeds.news import BasicNewsRecipe from calibre.ebooks.BeautifulSoup import Comment class Gazeta_Wyborcza(BasicNewsRecipe): - title = u'Gazeta.pl' + title = u'Gazeta Wyborcza' __author__ = 'fenuks, Artur Stachecki' language = 'pl' description = 'Wiadomości z Polski i ze świata. Serwisy tematyczne i lokalne w 20 miastach.' diff --git a/recipes/gofin_pl.recipe b/recipes/gofin_pl.recipe index 0063e889d4..5bf01dfb9c 100644 --- a/recipes/gofin_pl.recipe +++ b/recipes/gofin_pl.recipe @@ -9,7 +9,7 @@ gofin.pl from calibre.web.feeds.news import BasicNewsRecipe -class gofin(AutomaticNewsRecipe): +class gofin(BasicNewsRecipe): title = u'Gofin' __author__ = 'teepel ' language = 'pl' diff --git a/recipes/gram_pl.recipe b/recipes/gram_pl.recipe index baaac85492..67d18737f9 100644 --- a/recipes/gram_pl.recipe +++ b/recipes/gram_pl.recipe @@ -2,22 +2,22 @@ from calibre.web.feeds.news import BasicNewsRecipe from calibre.ebooks.BeautifulSoup import BeautifulSoup class Gram_pl(BasicNewsRecipe): - title = u'Gram.pl' - __author__ = 'fenuks' - description = u'Serwis społecznościowy o grach: recenzje, newsy, zapowiedzi, encyklopedia gier, forum. Gry PC, PS3, X360, PS Vita, sprzęt dla graczy.' - category = 'games' - language = 'pl' + title = u'Gram.pl' + __author__ = 'fenuks' + description = u'Serwis społecznościowy o grach: recenzje, newsy, zapowiedzi, encyklopedia gier, forum. Gry PC, PS3, X360, PS Vita, sprzęt dla graczy.' + category = 'games' + language = 'pl' oldest_article = 8 index='http://www.gram.pl' max_articles_per_feed = 100 ignore_duplicate_articles = {'title', 'url'} no_stylesheets= True remove_empty_feeds = True - #extra_css = 'h2 {font-style: italic; font-size:20px;} .picbox div {float: left;}' + #extra_css = 'h2 {font-style: italic; font-size:20px;} .picbox div {float: left;}' cover_url=u'http://www.gram.pl/www/01/img/grampl_zima.png' keep_only_tags= [dict(id='articleModule')] - remove_tags = [dict(attrs={'class':['breadCrump', 'dymek', 'articleFooter', 'twitter-share-button']})] - feeds = [(u'Informacje', u'http://www.gram.pl/feed_news.asp'), + remove_tags = [dict(attrs={'class':['breadCrump', 'dymek', 'articleFooter', 'twitter-share-button']}), dict(name='aside')] + feeds = [(u'Informacje', u'http://www.gram.pl/feed_news.asp'), (u'Publikacje', u'http://www.gram.pl/feed_news.asp?type=articles') ] @@ -46,4 +46,4 @@ class Gram_pl(BasicNewsRecipe): tag=soup.find(name='span', attrs={'class':'platforma'}) if tag: tag.name = 'p' - return soup + return soup \ No newline at end of file diff --git a/recipes/harpers_full.recipe b/recipes/harpers_full.recipe index 045d8dbb4e..24778925d3 100644 --- a/recipes/harpers_full.recipe +++ b/recipes/harpers_full.recipe @@ -1,5 +1,5 @@ __license__ = 'GPL v3' -__copyright__ = '2008-2012, Darko Miletic ' +__copyright__ = '2008-2013, Darko Miletic ' ''' harpers.org - paid subscription/ printed issue articles This recipe only get's article's published in text format @@ -14,7 +14,7 @@ from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe class Harpers_full(BasicNewsRecipe): - title = "Harper's Magazine - Printed Edition" + title = "Harper's Magazine - articles from printed edition" __author__ = 'Darko Miletic' description = "Harper's Magazine, the oldest general-interest monthly in America, explores the issues that drive our national conversation, through long-form narrative journalism and essays, and such celebrated features as the iconic Harper's Index." publisher = "Harpers's" @@ -29,7 +29,6 @@ class Harpers_full(BasicNewsRecipe): needs_subscription = 'optional' masthead_url = 'http://harpers.org/wp-content/themes/harpers/images/pheader.gif' publication_type = 'magazine' - INDEX = '' LOGIN = 'http://harpers.org/wp-content/themes/harpers/ajax_login.php' extra_css = """ body{font-family: adobe-caslon-pro,serif} @@ -66,43 +65,42 @@ class Harpers_full(BasicNewsRecipe): def parse_index(self): #find current issue - soup = self.index_to_soup('http://harpers.org/') currentIssue=soup.find('div',attrs={'class':'mainNavi'}).find('li',attrs={'class':'curentIssue'}) currentIssue_url=self.tag_to_string(currentIssue.a['href']) + self.log(currentIssue_url) #go to the current issue soup1 = self.index_to_soup(currentIssue_url) - date = re.split('\s\|\s',self.tag_to_string(soup1.head.title.string))[0] + currentIssue_title = self.tag_to_string(soup1.head.title.string) + date = re.split('\s\|\s',currentIssue_title)[0] self.timefmt = u' [%s]'%date #get cover - self.cover_url = soup1.find('div', attrs = {'class':'picture_hp'}).find('img', src=True)['src'] - + self.cover_url = soup1.find('div', attrs = {'class':'picture_hp'}).find('img', src=True)['src'] + self.log(self.cover_url) + articles = [] count = 0 for item in soup1.findAll('div', attrs={'class':'articleData'}): text_links = item.findAll('h2') - for text_link in text_links: - if count == 0: - count = 1 - else: - url = text_link.a['href'] - title = text_link.a.contents[0] - date = strftime(' %B %Y') - articles.append({ - 'title' :title - ,'date' :date - ,'url' :url - ,'description':'' - }) - return [(soup1.head.title.string, articles)] + if text_links: + for text_link in text_links: + if count == 0: + count = 1 + else: + url = text_link.a['href'] + title = self.tag_to_string(text_link.a) + date = strftime(' %B %Y') + articles.append({ + 'title' :title + ,'date' :date + ,'url' :url + ,'description':'' + }) + return [(currentIssue_title, articles)] def print_version(self, url): return url + '?single=1' - def cleanup(self): - soup = self.index_to_soup('http://harpers.org/') - signouturl=self.tag_to_string(soup.find('li', attrs={'class':'subLogOut'}).findNext('li').a['href']) - self.log(signouturl) - self.browser.open(signouturl) + diff --git a/recipes/hbr.recipe b/recipes/hbr.recipe index d996cf2200..a418ba96d4 100644 --- a/recipes/hbr.recipe +++ b/recipes/hbr.recipe @@ -1,6 +1,4 @@ from calibre.web.feeds.news import BasicNewsRecipe -import re -from datetime import date, timedelta class HBR(BasicNewsRecipe): @@ -11,23 +9,18 @@ class HBR(BasicNewsRecipe): timefmt = ' [%B %Y]' language = 'en' no_stylesheets = True - # recipe_disabled = ('hbr.org has started requiring the use of javascript' - # ' to log into their website. This is unsupported in calibre, so' - # ' this recipe has been disabled. If you would like to see ' - # ' HBR supported in calibre, contact hbr.org and ask them' - # ' to provide a javascript free login method.') LOGIN_URL = 'https://hbr.org/login?request_url=/' LOGOUT_URL = 'https://hbr.org/logout?request_url=/' - INDEX = 'http://hbr.org/archive-toc/BR' + INDEX = 'http://hbr.org' keep_only_tags = [dict(name='div', id='pageContainer')] remove_tags = [dict(id=['mastheadContainer', 'magazineHeadline', 'articleToolbarTopRD', 'pageRightSubColumn', 'pageRightColumn', 'todayOnHBRListWidget', 'mostWidget', 'keepUpWithHBR', 'mailingListTout', 'partnerCenter', 'pageFooter', - 'superNavHeadContainer', 'hbrDisqus', + 'superNavHeadContainer', 'hbrDisqus', 'article-toolbox', 'articleToolbarTop', 'articleToolbarBottom', 'articleToolbarRD']), dict(name='iframe')] extra_css = ''' @@ -57,22 +50,6 @@ class HBR(BasicNewsRecipe): if url.endswith('/ar/1'): return url[:-1]+'pr' - def hbr_get_toc(self): - # return self.index_to_soup(open('/t/toc.html').read()) - - today = date.today() - future = today + timedelta(days=30) - past = today - timedelta(days=30) - for x in [x.strftime('%y%m') for x in (future, today, past)]: - url = self.INDEX + x - soup = self.index_to_soup(url) - if (not soup.find(text='Issue Not Found') and not soup.find( - text="We're Sorry. There was an error processing your request") - and 'Exception: java.io.FileNotFoundException' not in - unicode(soup)): - return soup - raise Exception('Could not find current issue') - def hbr_parse_toc(self, soup): feeds = [] current_section = None @@ -105,23 +82,19 @@ class HBR(BasicNewsRecipe): articles.append({'title':title, 'url':url, 'description':desc, 'date':''}) + + if current_section is not None and articles: + feeds.append((current_section, articles)) return feeds def parse_index(self): - soup = self.hbr_get_toc() - # open('/t/hbr.html', 'wb').write(unicode(soup).encode('utf-8')) + soup0 = self.index_to_soup('http://hbr.org/magazine') + datencover = soup0.find('ul', attrs={'id':'magazineArchiveCarousel'}).findAll('li')[-1] + #find date & cover + self.cover_url=datencover.img['src'] + dates=self.tag_to_string(datencover.img['alt']) + self.timefmt = u' [%s]'%dates + soup = self.index_to_soup(self.INDEX + soup0.find('div', attrs = {'class':'magazine_page'}).a['href']) feeds = self.hbr_parse_toc(soup) return feeds - def get_cover_url(self): - cover_url = None - index = 'http://hbr.org/current' - soup = self.index_to_soup(index) - link_item = soup.find('img', alt=re.compile("Current Issue"), src=True) - - if link_item: - cover_url = 'http://hbr.org' + link_item['src'] - - return cover_url - - diff --git a/recipes/historia_pl.recipe b/recipes/historia_pl.recipe index 60554c0924..2402a3a64d 100644 --- a/recipes/historia_pl.recipe +++ b/recipes/historia_pl.recipe @@ -1,27 +1,22 @@ from calibre.web.feeds.news import BasicNewsRecipe class Historia_org_pl(BasicNewsRecipe): - title = u'Historia.org.pl' - __author__ = 'fenuks' - description = u'Artykuły dotyczące historii w układzie epok i tematów, forum. Najlepsza strona historii. Matura z historii i egzamin gimnazjalny z historii.' - cover_url = 'http://lh3.googleusercontent.com/_QeRQus12wGg/TOvHsZ2GN7I/AAAAAAAAD_o/LY1JZDnq7ro/logo5.jpg' - category = 'history' - language = 'pl' + title = u'Historia.org.pl' + __author__ = 'fenuks' + description = u'Artykuły dotyczące historii w układzie epok i tematów, forum. Najlepsza strona historii. Matura z historii i egzamin gimnazjalny z historii.' + cover_url = 'http://lh3.googleusercontent.com/_QeRQus12wGg/TOvHsZ2GN7I/AAAAAAAAD_o/LY1JZDnq7ro/logo5.jpg' + category = 'history' + language = 'pl' oldest_article = 8 + extra_css = 'img {float: left; margin-right: 10px;} .alignleft {float: left; margin-right: 10px;}' remove_empty_feeds= True no_stylesheets = True use_embedded_content = True max_articles_per_feed = 100 ignore_duplicate_articles = {'title', 'url'} - - - feeds = [(u'Wszystkie', u'http://historia.org.pl/feed/'), - (u'Wiadomości', u'http://historia.org.pl/Kategoria/wiadomosci/feed/'), - (u'Publikacje', u'http://historia.org.pl/Kategoria/artykuly/feed/'), - (u'Publicystyka', u'http://historia.org.pl/Kategoria/publicystyka/feed/'), - (u'Recenzje', u'http://historia.org.pl/Kategoria/recenzje/feed/'), - (u'Projekty', u'http://historia.org.pl/Kategoria/projekty/feed/'),] - - - def print_version(self, url): - return url + '?tmpl=component&print=1&layout=default&page=' \ No newline at end of file + feeds = [(u'Wszystkie', u'http://historia.org.pl/feed/'), + (u'Wiadomości', u'http://historia.org.pl/Kategoria/wiadomosci/feed/'), + (u'Publikacje', u'http://historia.org.pl/Kategoria/artykuly/feed/'), + (u'Publicystyka', u'http://historia.org.pl/Kategoria/publicystyka/feed/'), + (u'Recenzje', u'http://historia.org.pl/Kategoria/recenzje/feed/'), + (u'Projekty', u'http://historia.org.pl/Kategoria/projekty/feed/'),] \ No newline at end of file diff --git a/recipes/icons/dzial_zagraniczny.png b/recipes/icons/dzial_zagraniczny.png new file mode 100644 index 0000000000..1982db0462 Binary files /dev/null and b/recipes/icons/dzial_zagraniczny.png differ diff --git a/recipes/icons/equipped.png b/recipes/icons/equipped.png new file mode 100644 index 0000000000..a532b6f6ac Binary files /dev/null and b/recipes/icons/equipped.png differ diff --git a/recipes/icons/forbes_pl.png b/recipes/icons/forbes_pl.png new file mode 100644 index 0000000000..feaa47487a Binary files /dev/null and b/recipes/icons/forbes_pl.png differ diff --git a/recipes/icons/gazeta-prawna-calibre-v1.png b/recipes/icons/gazeta-prawna-calibre-v1.png new file mode 100644 index 0000000000..e5c7ae965c Binary files /dev/null and b/recipes/icons/gazeta-prawna-calibre-v1.png differ diff --git a/recipes/icons/gazeta_pl_krakow.png b/recipes/icons/gazeta_pl_krakow.png index 119afbba3a..49d76d2ddc 100644 Binary files a/recipes/icons/gazeta_pl_krakow.png and b/recipes/icons/gazeta_pl_krakow.png differ diff --git a/recipes/icons/gazeta_pl_szczecin.png b/recipes/icons/gazeta_pl_szczecin.png index 119afbba3a..49d76d2ddc 100644 Binary files a/recipes/icons/gazeta_pl_szczecin.png and b/recipes/icons/gazeta_pl_szczecin.png differ diff --git a/recipes/icons/gazeta_pl_warszawa.png b/recipes/icons/gazeta_pl_warszawa.png index 119afbba3a..49d76d2ddc 100644 Binary files a/recipes/icons/gazeta_pl_warszawa.png and b/recipes/icons/gazeta_pl_warszawa.png differ diff --git a/recipes/icons/gazeta_wyborcza.png b/recipes/icons/gazeta_wyborcza.png index 119afbba3a..49d76d2ddc 100644 Binary files a/recipes/icons/gazeta_wyborcza.png and b/recipes/icons/gazeta_wyborcza.png differ diff --git a/recipes/icons/ittechblog.png b/recipes/icons/ittechblog.png new file mode 100644 index 0000000000..825e025510 Binary files /dev/null and b/recipes/icons/ittechblog.png differ diff --git a/recipes/icons/magazyn_consido.png b/recipes/icons/magazyn_consido.png new file mode 100644 index 0000000000..5d54a337de Binary files /dev/null and b/recipes/icons/magazyn_consido.png differ diff --git a/recipes/icons/media2.png b/recipes/icons/media2.png new file mode 100644 index 0000000000..8e98c4df4e Binary files /dev/null and b/recipes/icons/media2.png differ diff --git a/recipes/icons/mobilna.png b/recipes/icons/mobilna.png new file mode 100644 index 0000000000..30db9287be Binary files /dev/null and b/recipes/icons/mobilna.png differ diff --git a/recipes/icons/mojegotowanie.png b/recipes/icons/mojegotowanie.png new file mode 100644 index 0000000000..b9df6dc6d0 Binary files /dev/null and b/recipes/icons/mojegotowanie.png differ diff --git a/recipes/icons/najwyzszy_czas.png b/recipes/icons/najwyzszy_czas.png new file mode 100644 index 0000000000..bc6812ce0b Binary files /dev/null and b/recipes/icons/najwyzszy_czas.png differ diff --git a/recipes/icons/newsweek_polska.png b/recipes/icons/newsweek_polska.png new file mode 100644 index 0000000000..83e84b89e2 Binary files /dev/null and b/recipes/icons/newsweek_polska.png differ diff --git a/recipes/icons/nowiny_rybnik.png b/recipes/icons/nowiny_rybnik.png new file mode 100644 index 0000000000..6f4b11c1f3 Binary files /dev/null and b/recipes/icons/nowiny_rybnik.png differ diff --git a/recipes/icons/osw.png b/recipes/icons/osw.png new file mode 100644 index 0000000000..0693aee762 Binary files /dev/null and b/recipes/icons/osw.png differ diff --git a/recipes/icons/ppe_pl.png b/recipes/icons/ppe_pl.png new file mode 100644 index 0000000000..42c9b42fa5 Binary files /dev/null and b/recipes/icons/ppe_pl.png differ diff --git a/recipes/icons/presseurop.png b/recipes/icons/presseurop.png new file mode 100644 index 0000000000..9967aac1fb Binary files /dev/null and b/recipes/icons/presseurop.png differ diff --git a/recipes/icons/res_publica.png b/recipes/icons/res_publica.png new file mode 100644 index 0000000000..7c21e9d96e Binary files /dev/null and b/recipes/icons/res_publica.png differ diff --git a/recipes/icons/slashdot.png b/recipes/icons/slashdot.png new file mode 100644 index 0000000000..5e7487244b Binary files /dev/null and b/recipes/icons/slashdot.png differ diff --git a/recipes/icons/sport_pl.png b/recipes/icons/sport_pl.png new file mode 100644 index 0000000000..83931be40d Binary files /dev/null and b/recipes/icons/sport_pl.png differ diff --git a/recipes/icons/sportowefakty.png b/recipes/icons/sportowefakty.png new file mode 100644 index 0000000000..0128c34f26 Binary files /dev/null and b/recipes/icons/sportowefakty.png differ diff --git a/recipes/icons/wolne_media.png b/recipes/icons/wolne_media.png new file mode 100644 index 0000000000..78d72713ab Binary files /dev/null and b/recipes/icons/wolne_media.png differ diff --git a/recipes/icons/wysokie_obcasy.png b/recipes/icons/wysokie_obcasy.png new file mode 100644 index 0000000000..3ab94b3c66 Binary files /dev/null and b/recipes/icons/wysokie_obcasy.png differ diff --git a/recipes/infra_pl.recipe b/recipes/infra_pl.recipe index 8c1915db15..09228c15d5 100644 --- a/recipes/infra_pl.recipe +++ b/recipes/infra_pl.recipe @@ -1,21 +1,20 @@ from calibre.web.feeds.news import BasicNewsRecipe class INFRA(BasicNewsRecipe): - title = u'INFRA' + title = u'INFRA' oldest_article = 7 max_articles_per_feed = 100 - __author__ = 'fenuks' - 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' + __author__ = 'fenuks' + description = u'Serwis Informacyjny INFRA - UFO, Zjawiska Paranormalne, Duchy, Tajemnice świata.' + cover_url = 'http://i.imgur.com/j7hJT.jpg' + category = 'UFO' index='http://infra.org.pl' - language = 'pl' + language = 'pl' max_articles_per_feed = 100 - no_stylesheers=True - remove_tags_before=dict(name='h2', attrs={'class':'contentheading'}) - remove_tags_after=dict(attrs={'class':'pagenav'}) - remove_tags=[dict(attrs={'class':'pagenav'})] - feeds = [(u'Najnowsze wiadomo\u015bci', u'http://www.infra.org.pl/rss')] + remove_attrs = ['style'] + no_stylesheets = True + keep_only_tags = [dict(id='ja-current-content')] + feeds = [(u'Najnowsze wiadomo\u015bci', u'http://www.infra.org.pl/rss')] def preprocess_html(self, soup): for item in soup.findAll(style=True): @@ -23,4 +22,4 @@ class INFRA(BasicNewsRecipe): for a in soup('a'): if a.has_key('href') and 'http://' not in a['href'] and 'https://' not in a['href']: a['href']=self.index + a['href'] - return soup + return soup \ No newline at end of file diff --git a/recipes/ittechblog.recipe b/recipes/ittechblog.recipe new file mode 100644 index 0000000000..3fa557d11e --- /dev/null +++ b/recipes/ittechblog.recipe @@ -0,0 +1,26 @@ +__license__ = 'GPL v3' +__copyright__ = 'MrStefan' + +''' +www.ittechblog.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class ittechblog(BasicNewsRecipe): + title = u'IT techblog' + __author__ = 'MrStefan ' + language = 'pl' + description =u'Na naszym blogu technologicznym znajdziesz między innymi: testy sprzętu, najnowsze startupy, technologiczne nowinki, felietony tematyczne.' + extra_css = '.cover > img {display:block;}' + remove_empty_feeds = True + oldest_article = 7 + max_articles_per_feed = 100 + remove_javascript = True + no_stylesheets = True + use_embedded_content = False + + keep_only_tags =[dict(attrs={'class':'box'})] + remove_tags =[dict(name='aside'), dict(attrs={'class':['tags', 'counter', 'twitter-share-button']})] + + feeds = [(u'Artykuły', u'http://feeds.feedburner.com/ITTechBlog?format=xml')] diff --git a/recipes/kdefamily_pl.recipe b/recipes/kdefamily_pl.recipe index 75f88b0f3d..df0aacc2df 100644 --- a/recipes/kdefamily_pl.recipe +++ b/recipes/kdefamily_pl.recipe @@ -1,14 +1,16 @@ +import re from calibre.web.feeds.news import BasicNewsRecipe class KDEFamilyPl(BasicNewsRecipe): - title = u'KDEFamily.pl' - __author__ = 'fenuks' - description = u'KDE w Polsce' - category = 'open source, KDE' - language = 'pl' + title = u'KDEFamily.pl' + __author__ = 'fenuks' + description = u'KDE w Polsce' + category = 'open source, KDE' + language = 'pl' cover_url = 'http://www.mykde.home.pl/kdefamily/wp-content/uploads/2012/07/logotype-e1341585198616.jpg' oldest_article = 7 max_articles_per_feed = 100 + preprocess_regexps = [(re.compile(r"Podobne wpisy.*", re.IGNORECASE|re.DOTALL), lambda m: '')] no_stylesheets = True use_embedded_content = True - feeds = [(u'Wszystko', u'http://kdefamily.pl/feed/')] + feeds = [(u'Wszystko', u'http://kdefamily.pl/feed/')] \ No newline at end of file diff --git a/recipes/konflikty_zbrojne.recipe b/recipes/konflikty_zbrojne.recipe index b29e7e243b..8d09c61a7a 100644 --- a/recipes/konflikty_zbrojne.recipe +++ b/recipes/konflikty_zbrojne.recipe @@ -3,10 +3,10 @@ from calibre.web.feeds.news import BasicNewsRecipe from calibre.ebooks.BeautifulSoup import BeautifulSoup class Konflikty(BasicNewsRecipe): - title = u'Konflikty Zbrojne' - __author__ = 'fenuks' - cover_url = 'http://www.konflikty.pl/images/tapety_logo.jpg' - language = 'pl' + title = u'Konflikty Zbrojne' + __author__ = 'fenuks' + cover_url = 'http://www.konflikty.pl/images/tapety_logo.jpg' + language = 'pl' description = u'Zbiór ciekawych artykułów historycznych, militarnych oraz recenzji książek, gier i filmów. Najświeższe informacje o lotnictwie, wojskach lądowych i polityce.' category='military, history' oldest_article = 7 @@ -14,19 +14,20 @@ class Konflikty(BasicNewsRecipe): 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'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')] + feeds = [(u'Aktualności', u'http://www.konflikty.pl/rss_aktualnosci_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'}): + image['style'] = 'width: 210px; float: left; margin-right:5px;' 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 + return soup \ No newline at end of file diff --git a/recipes/kosmonauta_pl.recipe b/recipes/kosmonauta_pl.recipe index 98628d667a..d943739832 100644 --- a/recipes/kosmonauta_pl.recipe +++ b/recipes/kosmonauta_pl.recipe @@ -2,12 +2,13 @@ from calibre.web.feeds.news import BasicNewsRecipe class Kosmonauta(BasicNewsRecipe): - title = u'Kosmonauta.net' - __author__ = 'fenuks' - description = u'polskojęzyczny portal w całości dedykowany misjom kosmicznym i badaniom kosmosu.' - category = 'astronomy' - language = 'pl' + title = u'Kosmonauta.net' + __author__ = 'fenuks' + description = u'polskojęzyczny portal w całości dedykowany misjom kosmicznym i badaniom kosmosu.' + category = 'astronomy' + language = 'pl' cover_url = 'http://bi.gazeta.pl/im/4/10393/z10393414X,Kosmonauta-net.jpg' + extra_css = '.thumbnail {float:left;margin-right:5px;}' no_stylesheets = True INDEX = 'http://www.kosmonauta.net' oldest_article = 7 @@ -16,9 +17,12 @@ class Kosmonauta(BasicNewsRecipe): remove_attributes = ['style'] max_articles_per_feed = 100 keep_only_tags = [dict(name='div', attrs={'class':'item-page'})] - remove_tags = [dict(attrs={'class':['article-tools clearfix', 'cedtag', 'nav clearfix', 'jwDisqusForm']})] + remove_tags = [dict(attrs={'class':['article-tools clearfix', 'cedtag', 'nav clearfix', 'jwDisqusForm']}), dict(attrs={'alt':['Poprzednia strona', 'Następna strona']})] remove_tags_after = dict(name='div', attrs={'class':'cedtag'}) - feeds = [(u'Kosmonauta.net', u'http://www.kosmonauta.net/?format=feed&type=atom')] + feeds = [(u'Kosmonauta.net', u'http://www.kosmonauta.net/?format=feed&type=atom')] + + def print_version(self, url): + return url + '?tmpl=component&print=1&layout=default&page=' def preprocess_html(self, soup): for a in soup.findAll(name='a'): @@ -26,5 +30,4 @@ class Kosmonauta(BasicNewsRecipe): href = a['href'] if not href.startswith('http'): a['href'] = self.INDEX + href - return soup - + return soup \ No newline at end of file diff --git a/recipes/kp.recipe b/recipes/kp.recipe index 85bf356b4d..3a2bc62eb0 100644 --- a/recipes/kp.recipe +++ b/recipes/kp.recipe @@ -2,8 +2,7 @@ from calibre.web.feeds.news import BasicNewsRecipe class KrytykaPolitycznaRecipe(BasicNewsRecipe): - __license__ = 'GPL v3' - __author__ = u'intromatyk ' + __author__ = u'Artur Stachecki ' language = 'pl' version = 1 diff --git a/recipes/ledevoir.recipe b/recipes/ledevoir.recipe index 723f0360c6..99d4250bcf 100644 --- a/recipes/ledevoir.recipe +++ b/recipes/ledevoir.recipe @@ -12,7 +12,6 @@ http://www.ledevoir.com/ import re from calibre.web.feeds.news import BasicNewsRecipe -from calibre.utils.magick import Image class ledevoir(BasicNewsRecipe): author = 'Lorenzo Vigentini' @@ -129,12 +128,12 @@ class ledevoir(BasicNewsRecipe): img = Image() img.open(iurl) # width, height = img.size - # print 'img is: ', iurl, 'width is: ', width, 'height is: ', height + # print 'img is: ', iurl, 'width is: ', width, 'height is: ', height if img < 0: raise RuntimeError('Out of memory') img.set_compression_quality(30) img.save(iurl) return soup ''' - - \ No newline at end of file + + diff --git a/recipes/list_apart.recipe b/recipes/list_apart.recipe index 35cbaad958..c11956110f 100644 --- a/recipes/list_apart.recipe +++ b/recipes/list_apart.recipe @@ -1,33 +1,23 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +# vim:fileencoding=UTF-8 +from __future__ import unicode_literals from calibre.web.feeds.news import BasicNewsRecipe class AListApart (BasicNewsRecipe): - __author__ = u'Marc Busqué ' + __author__ = 'Marc Busqué ' __url__ = 'http://www.lamarciana.com' - __version__ = '1.0' + __version__ = '2.0' __license__ = 'GPL v3' - __copyright__ = u'2012, Marc Busqué ' + __copyright__ = '2012, Marc Busqué ' title = u'A List Apart' - description = u'A List Apart Magazine (ISSN: 1534-0295) explores the design, development, and meaning of web content, with a special focus on web standards and best practices.' + description = u'A List Apart Magazine (ISSN: 1534-0295) explores the design, development, and meaning of web content, with a special focus on web standards and best practices. This recipe retrieve articles and columns.' language = 'en' tags = 'web development, software' oldest_article = 120 remove_empty_feeds = True - no_stylesheets = True encoding = 'utf8' cover_url = u'http://alistapart.com/pix/alalogo.gif' - keep_only_tags = [ - dict(name='div', attrs={'id': 'content'}) - ] - remove_tags = [ - dict(name='ul', attrs={'id': 'metastuff'}), - dict(name='div', attrs={'class': 'discuss'}), - dict(name='div', attrs={'class': 'discuss'}), - dict(name='div', attrs={'id': 'learnmore'}), - ] - remove_attributes = ['border', 'cellspacing', 'align', 'cellpadding', 'colspan', 'valign', 'vspace', 'hspace', 'alt', 'width', 'height'] - extra_css = u'img {max-width: 100%; display: block; margin: auto;} #authorbio img {float: left; margin-right: 2%;}' + extra_css = u'img {max-width: 100%; display: block; margin: auto;}' feeds = [ - (u'A List Apart', u'http://www.alistapart.com/site/rss'), + (u'A List Apart', u'http://feeds.feedburner.com/alistapart/abridged'), ] diff --git a/recipes/magazyn_consido.recipe b/recipes/magazyn_consido.recipe new file mode 100644 index 0000000000..d24c66d6a4 --- /dev/null +++ b/recipes/magazyn_consido.recipe @@ -0,0 +1,88 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' + +''' +magazynconsido.pl/ +''' + +from calibre.web.feeds.news import BasicNewsRecipe +from calibre.utils.magick import Image + +class magazynconsido(BasicNewsRecipe): + title = u'Magazyn Consido' + __author__ = 'Artur Stachecki ,teepel ' + language = 'pl' + description =u'Portal dla architektów i projektantów' + masthead_url='http://qualitypixels.pl/wp-content/themes/airlock/advance/inc/timthumb.php?src=http://qualitypixels.pl/wp-content/uploads/2012/01/logotyp-magazynconsido-11.png&w=455&zc=1' + oldest_article = 7 + max_articles_per_feed = 100 + remove_javascript=True + no_stylesheets = True + use_embedded_content = False + + keep_only_tags =[] + keep_only_tags.append(dict(name = 'h1')) + keep_only_tags.append(dict(name = 'p')) + keep_only_tags.append(dict(attrs = {'class' : 'navigation'})) + remove_tags =[dict(attrs = {'style' : 'font-size: x-small;' })] + + remove_tags_after =[dict(attrs = {'class' : 'navigation' })] + + extra_css=''' img {max-width:30%; max-height:30%; display: block; margin-left: auto; margin-right: auto;} + h1 {text-align: center;}''' + + def parse_index(self): #(kk) + soup = self.index_to_soup('http://feeds.feedburner.com/magazynconsido?format=xml') + feeds = [] + articles = {} + sections = [] + section = '' + + for item in soup.findAll('item') : + section = self.tag_to_string(item.category) + if not articles.has_key(section) : + sections.append(section) + articles[section] = [] + article_url = self.tag_to_string(item.guid) + article_title = self.tag_to_string(item.title) + article_date = self.tag_to_string(item.pubDate) + article_description = self.tag_to_string(item.description) + articles[section].append( { 'title' : article_title, 'url' : article_url, 'date' : article_date, 'description' : article_description }) + + for section in sections : + if section == 'Video': + feeds.append((section, articles[section])) + feeds.pop() + else: + feeds.append((section, articles[section])) + return feeds + + def append_page(self, soup, appendtag): + apage = soup.find('div', attrs={'class':'wp-pagenavi'}) + if apage is not None: + nexturl = soup.find('a', attrs={'class':'nextpostslink'}) + soup2 = self.index_to_soup(nexturl['href']) + pagetext = soup2.findAll('p') + for tag in pagetext: + pos = len(appendtag.contents) + appendtag.insert(pos, tag) + + while appendtag.find('div', attrs={'class': ['height: 35px;', 'post-meta', 'addthis_toolbox addthis_default_style addthis_', 'post-meta-bottom', 'block_recently_post', 'fbcomments', 'pin-it-button', 'pages', 'navigation']}) is not None: + appendtag.find('div', attrs={'class': ['height: 35px;', 'post-meta', 'addthis_toolbox addthis_default_style addthis_', 'post-meta-bottom', 'block_recently_post', 'fbcomments', 'pin-it-button', 'pages', 'navigation']}).replaceWith('') + + def preprocess_html(self, soup): #(kk) + self.append_page(soup, soup.body) + return self.adeify_images(soup) + + def postprocess_html(self, soup, first): + #process all the images + for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')): + iurl = tag['src'] + img = Image() + img.open(iurl) + if img < 0: + raise RuntimeError('Out of memory') + img.type = "GrayscaleType" + img.save(iurl) + return soup diff --git a/recipes/media2.recipe b/recipes/media2.recipe new file mode 100644 index 0000000000..135740a62e --- /dev/null +++ b/recipes/media2.recipe @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = 'teepel' + +''' +media2.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class media2_pl(BasicNewsRecipe): + title = u'Media2' + __author__ = 'teepel ' + language = 'pl' + description =u'Media2.pl to jeden z najczęściej odwiedzanych serwisów dla profesjonalistów z branży medialnej, telekomunikacyjnej, public relations oraz nowych technologii.' + masthead_url='http://media2.pl/res/logo/www.png' + remove_empty_feeds= True + oldest_article = 1 + max_articles_per_feed = 100 + remove_javascript=True + no_stylesheets=True + simultaneous_downloads = 5 + + extra_css = '''.news-lead{font-weight: bold; }''' + + keep_only_tags =[] + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'news-item tpl-big'})) + + remove_tags =[] + remove_tags.append(dict(name = 'span', attrs = {'class' : 'news-comments'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'item-sidebar'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'news-tags'})) + + feeds = [(u'Media2', u'http://feeds.feedburner.com/media2')] diff --git a/recipes/metro_uk.recipe b/recipes/metro_uk.recipe index 78db75daf8..6b5ee3bf4b 100644 --- a/recipes/metro_uk.recipe +++ b/recipes/metro_uk.recipe @@ -6,10 +6,10 @@ import time class AdvancedUserRecipe1306097511(BasicNewsRecipe): title = u'Metro UK' - description = 'News as provided by The Metro -UK' + description = 'News from The Metro, UK' #timefmt = '' - __author__ = 'fleclerc & Dave Asbury' - #last update 20/1/13 + __author__ = 'Dave Asbury' + #last update 4/4/13 #cover_url = 'http://profile.ak.fbcdn.net/hprofile-ak-snc4/276636_117118184990145_2132092232_n.jpg' cover_url = 'https://twimg0-a.akamaihd.net/profile_images/1638332595/METRO_LETTERS-01.jpg' @@ -22,7 +22,7 @@ class AdvancedUserRecipe1306097511(BasicNewsRecipe): language = 'en_GB' masthead_url = 'http://e-edition.metro.co.uk/images/metro_logo.gif' - + compress_news_images = True def parse_index(self): articles = {} key = None diff --git a/recipes/mlody_technik_pl.recipe b/recipes/mlody_technik_pl.recipe index 4622e73909..dc46bc665d 100644 --- a/recipes/mlody_technik_pl.recipe +++ b/recipes/mlody_technik_pl.recipe @@ -2,13 +2,14 @@ import re from calibre.web.feeds.news import BasicNewsRecipe class Mlody_technik(BasicNewsRecipe): - title = u'Młody technik' - __author__ = 'fenuks' - description = u'Młody technik' - category = 'science' - language = 'pl' + title = u'Młody technik' + __author__ = 'fenuks' + description = u'Młody technik' + category = 'science' + language = 'pl' #cover_url = 'http://science-everywhere.pl/wp-content/uploads/2011/10/mt12.jpg' no_stylesheets = True + extra_css = 'img.alignleft {float: left; margin-right: 5px;}' preprocess_regexps = [(re.compile(r"

Podobne

", re.IGNORECASE), lambda m: '')] oldest_article = 7 max_articles_per_feed = 100 @@ -17,18 +18,18 @@ class Mlody_technik(BasicNewsRecipe): keep_only_tags = [dict(id='content')] remove_tags = [dict(attrs={'class':'st-related-posts'})] remove_tags_after = dict(attrs={'class':'entry-content clearfix'}) - feeds = [(u'Wszystko', u'http://www.mt.com.pl/feed'), - #(u'MT NEWS 24/7', u'http://www.mt.com.pl/kategoria/mt-newsy-24-7/feed'), - (u'Info zoom', u'http://www.mt.com.pl/kategoria/info-zoom/feed'), - (u'm.technik', u'http://www.mt.com.pl/kategoria/m-technik/feed'), - (u'Szkoła', u'http://www.mt.com.pl/kategoria/szkola-2/feed'), - (u'Na Warsztacie', u'http://www.mt.com.pl/kategoria/na-warsztacie/feed'), - (u'Z pasji do...', u'http://www.mt.com.pl/kategoria/z-pasji-do/feed'), - (u'MT testuje', u'http://www.mt.com.pl/kategoria/mt-testuje/feed')] + feeds = [(u'Wszystko', u'http://www.mt.com.pl/feed'), + #(u'MT NEWS 24/7', u'http://www.mt.com.pl/kategoria/mt-newsy-24-7/feed'), + (u'Info zoom', u'http://www.mt.com.pl/kategoria/info-zoom/feed'), + (u'm.technik', u'http://www.mt.com.pl/kategoria/m-technik/feed'), + (u'Szkoła', u'http://www.mt.com.pl/kategoria/szkola-2/feed'), + (u'Na Warsztacie', u'http://www.mt.com.pl/kategoria/na-warsztacie/feed'), + (u'Z pasji do...', u'http://www.mt.com.pl/kategoria/z-pasji-do/feed'), + (u'MT testuje', u'http://www.mt.com.pl/kategoria/mt-testuje/feed')] def get_cover_url(self): soup = self.index_to_soup('http://www.mt.com.pl/') tag = soup.find(attrs={'class':'xoxo'}) if tag: self.cover_url = tag.find('img')['src'] - return getattr(self, 'cover_url', self.cover_url) + return getattr(self, 'cover_url', self.cover_url) \ No newline at end of file diff --git a/recipes/mobilna.recipe b/recipes/mobilna.recipe new file mode 100644 index 0000000000..68ae011438 --- /dev/null +++ b/recipes/mobilna.recipe @@ -0,0 +1,26 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = 'MrStefan' + +''' +www.mobilna.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class mobilna(BasicNewsRecipe): + title = u'Mobilna.pl' + __author__ = 'MrStefan ' + language = 'pl' + description =u'twoja mobilna strona' + #masthead_url='' + remove_empty_feeds= True + oldest_article = 7 + max_articles_per_feed = 100 + remove_javascript=True + no_stylesheets=True + use_embedded_content = True + #keep_only_tags =[dict(attrs={'class':'Post'})] + + feeds = [(u'Artykuły', u'http://mobilna.pl/feed/')] diff --git a/recipes/mojegotowanie.recipe b/recipes/mojegotowanie.recipe new file mode 100644 index 0000000000..4b0de4a0e1 --- /dev/null +++ b/recipes/mojegotowanie.recipe @@ -0,0 +1,50 @@ +#!usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = 'MrStefan, teepel' + +''' +www.mojegotowanie.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class mojegotowanie(BasicNewsRecipe): + title = u'Moje Gotowanie' + __author__ = 'MrStefan , teepel ' + language = 'pl' + description =u'Gotowanie to Twoja pasja? Uwielbiasz sałatki? Lubisz grillować? Przepisy kulinarne doskonałe na wszystkie okazje znajdziesz na www.mojegotowanie.pl.' + masthead_url='http://www.mojegotowanie.pl/extension/selfstart/design/self/images/top_c2.gif' + cover_url = 'http://www.mojegotowanie.pl/extension/selfstart/design/self/images/mgpl/mojegotowanie.gif' + remove_empty_feeds= True + oldest_article = 7 + max_articles_per_feed = 100 + remove_javascript=True + no_stylesheets=True + + keep_only_tags =[] + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'content'})) + + feeds = [(u'Artykuły', u'http://mojegotowanie.pl/rss/feed/artykuly'), + (u'Przepisy', u'http://mojegotowanie.pl/rss/feed/przepisy')] + + def parse_feeds(self): + feeds = BasicNewsRecipe.parse_feeds(self) + for feed in feeds: + for article in feed.articles[:]: + if 'film' in article.title: + feed.articles.remove(article) + return feeds + + def get_article_url(self, article): + link = article.get('link') + if 'Clayout0Cset0Cprint0' in link: + return link + + def print_version(self, url): + segment = url.split('/') + URLPart = segment[-2] + URLPart = URLPart.replace('0L0Smojegotowanie0Bpl0Clayout0Cset0Cprint0C', '/') + URLPart = URLPart.replace('0I', '_') + URLPart = URLPart.replace('0C', '/') + return 'http://www.mojegotowanie.pl/layout/set/print' + URLPart diff --git a/recipes/najwyzszy_czas.recipe b/recipes/najwyzszy_czas.recipe new file mode 100644 index 0000000000..9c4a82c4ea --- /dev/null +++ b/recipes/najwyzszy_czas.recipe @@ -0,0 +1,27 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__author__ = 'teepel ' + +''' +nczas.com +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class nczas(BasicNewsRecipe): + title = u'Najwy\u017cszy Czas' + __author__ = 'teepel ' + language = 'pl' + description ='Wiadomości z nczas.com' + INDEX='http://nczas.com' + oldest_article = 7 + max_articles_per_feed = 100 + use_embedded_content = True + remove_empty_feeds= True + simultaneous_downloads = 5 + remove_javascript=True + remove_attributes = ['style'] + no_stylesheets=True + + feeds = [(u'Najwyższy Czas', u'http://nczas.com/feed/')] diff --git a/recipes/nauka_w_polsce.recipe b/recipes/nauka_w_polsce.recipe index c524c18b26..715780d162 100644 --- a/recipes/nauka_w_polsce.recipe +++ b/recipes/nauka_w_polsce.recipe @@ -1,16 +1,18 @@ from calibre.web.feeds.news import BasicNewsRecipe import re class NaukawPolsce(BasicNewsRecipe): - title = u'Nauka w Polsce' - __author__ = 'fenuks' - description = u'Serwis Nauka w Polsce ma za zadanie popularyzację polskiej nauki. Można na nim znaleźć wiadomości takie jak: osiągnięcia polskich naukowców, wydarzenia na polskich uczelniach, osiągnięcia studentów, konkursy dla badaczy, staże i stypendia naukowe, wydarzenia w polskiej nauce, kalendarium wydarzeń w nauce, materiały wideo o nauce.' - category = 'science' - language = 'pl' + title = u'Nauka w Polsce' + __author__ = 'fenuks' + description = u'Serwis Nauka w Polsce ma za zadanie popularyzację polskiej nauki. Można na nim znaleźć wiadomości takie jak: osiągnięcia polskich naukowców, wydarzenia na polskich uczelniach, osiągnięcia studentów, konkursy dla badaczy, staże i stypendia naukowe, wydarzenia w polskiej nauce, kalendarium wydarzeń w nauce, materiały wideo o nauce.' + category = 'science' + language = 'pl' cover_url = 'http://www.naukawpolsce.pap.pl/Themes/Pap/images/logo-pl.gif' oldest_article = 7 max_articles_per_feed = 100 no_stylesheets = True remove_empty_feeds = True + extra_css = '.miniaturka {float: left; margin-right: 5px; max-width: 350px;} .miniaturka-dol-strony {display: inline-block; margin: 0 15px; width: 120px;}' + ignore_duplicate_articles = {'title', 'url'} index = 'http://www.naukawpolsce.pl' keep_only_tags = [dict(name='div', attrs={'class':'margines wiadomosc'})] remove_tags = [dict(name='div', attrs={'class':'tagi'})] @@ -23,8 +25,8 @@ class NaukawPolsce(BasicNewsRecipe): url = self.index + i.h1.a['href'] date = '' #i.span.string articles.append({'title' : title, - 'url' : url, - 'date' : date, + 'url' : url, + 'date' : date, 'description' : '' }) return articles @@ -44,4 +46,4 @@ class NaukawPolsce(BasicNewsRecipe): def preprocess_html(self, soup): for p in soup.findAll(name='p', text=re.compile(' ')): p.extract() - return soup + return soup \ No newline at end of file diff --git a/recipes/new_yorker.recipe b/recipes/new_yorker.recipe index 2730b45d6d..93a231792c 100644 --- a/recipes/new_yorker.recipe +++ b/recipes/new_yorker.recipe @@ -1,64 +1,44 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- __license__ = 'GPL v3' -__copyright__ = '2008-2013, Darko Miletic ' -''' -newyorker.com -''' +''' +www.canada.com +''' +import re from calibre.web.feeds.news import BasicNewsRecipe +from calibre.ebooks.BeautifulSoup import BeautifulStoneSoup + class NewYorker(BasicNewsRecipe): - title = 'The New Yorker' - __author__ = 'Darko Miletic' - description = 'The best of US journalism' - oldest_article = 15 - language = 'en' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - publisher = 'Conde Nast Publications' - category = 'news, politics, USA' - encoding = 'cp1252' - publication_type = 'magazine' - masthead_url = 'http://www.newyorker.com/css/i/hed/logo.gif' - extra_css = """ - body {font-family: "Times New Roman",Times,serif} - .articleauthor{color: #9F9F9F; - font-family: Arial, sans-serif; - font-size: small; - text-transform: uppercase} - .rubric,.dd,h6#credit{color: #CD0021; - font-family: Arial, sans-serif; - font-size: small; - text-transform: uppercase} - .descender:first-letter{display: inline; font-size: xx-large; font-weight: bold} - .dd,h6#credit{color: gray} - .c{display: block} - .caption,h2#articleintro{font-style: italic} - .caption{font-size: small} - """ - conversion_options = { - 'comment' : description - , 'tags' : category - , 'publisher' : publisher - , 'language' : language - } - keep_only_tags = [dict(name='div', attrs={'id':'pagebody'})] - remove_tags = [ - dict(name=['meta','iframe','base','link','embed','object']) - ,dict(attrs={'class':['utils','socialUtils','articleRailLinks','icons','social-utils-top','entry-keywords','entry-categories','utilsPrintEmail'] }) - ,dict(attrs={'id':['show-header','show-footer'] }) - ] - remove_tags_after = dict(attrs={'class':'entry-content'}) - remove_attributes = ['lang'] - feeds = [(u'The New Yorker', u'http://www.newyorker.com/services/mrss/feeds/everything.xml')] + title = u'New Yorker Magazine' + newyorker_prefix = 'http://m.newyorker.com' + description = u'Content from the New Yorker website' + fp_tag = 'CAN_TC' - def print_version(self, url): - return url + '?printable=true¤tPage=all' + masthead_url = 'http://www.newyorker.com/images/elements/print/newyorker_printlogo.gif' - def image_url_processor(self, baseurl, url): - return url.strip() + compress_news_images = True + compress_news_images_auto_size = 8 + scale_news_images_to_device = False + scale_news_images = (768, 1024) + + url_list = [] + language = 'en' + __author__ = 'Nick Redding' + no_stylesheets = True + timefmt = ' [%b %d]' + encoding = 'utf-8' + extra_css = ''' + .byline { font-size:xx-small; font-weight: bold;} + h3 { margin-bottom: 6px; } + .caption { font-size: xx-small; font-style: italic; font-weight: normal; } + ''' + keep_only_tags = [dict(name='div', attrs={'id':re.compile('pagebody')})] + + remove_tags = [{'class':'socialUtils'},{'class':'entry-keywords'}] def get_cover_url(self): cover_url = "http://www.newyorker.com/images/covers/1925/1925_02_21_p233.jpg" @@ -68,13 +48,233 @@ class NewYorker(BasicNewsRecipe): cover_url = 'http://www.newyorker.com' + cover_item.div.img['src'].strip() return cover_url - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - auth = soup.find(attrs={'id':'articleauthor'}) - if auth: - alink = auth.find('a') - if alink and alink.string is not None: - txt = alink.string - alink.replaceWith(txt) + 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'] + shortparagraph = "" +## try: + if len(article.text_summary.strip()) == 0: + articlebodies = soup.findAll('div',attrs={'class':'entry-content'}) + if articlebodies: + for articlebody in articlebodies: + if articlebody: + paras = articlebody.findAll('p') + for p in paras: + refparagraph = self.massageNCXText(self.tag_to_string(p,use_alt=False)).strip() + #account for blank paragraphs and short paragraphs by appending them to longer ones + if len(refparagraph) > 0: + if len(refparagraph) > 70: #approximately one line of text + newpara = shortparagraph + refparagraph + article.summary = article.text_summary = newpara.strip() + return + else: + shortparagraph = refparagraph + " " + if shortparagraph.strip().find(" ") == -1 and not shortparagraph.strip().endswith(":"): + shortparagraph = shortparagraph + "- " + else: + article.summary = article.text_summary = self.massageNCXText(article.text_summary) +## except: +## self.log("Error creating article descriptions") +## return + + + 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): + dateline = soup.find('div','published') + byline = soup.find('div','byline') + title = soup.find('h1','entry-title') + if title is None: + return self.strip_anchors(soup) + if byline is None: + title.append(dateline) + return self.strip_anchors(soup) + byline.append(dateline) + return self.strip_anchors(soup) + + def load_global_nav(self,soup): + seclist = [] + ul = soup.find('ul',attrs={'id':re.compile('global-nav-menu')}) + if ul is not None: + for li in ul.findAll('li'): + if li.a is not None: + securl = li.a['href'] + if securl != '/' and securl != '/magazine' and securl.startswith('/'): + seclist.append((self.tag_to_string(li.a),self.newyorker_prefix+securl)) + return seclist + + def exclude_url(self,url): + if url in self.url_list: + return True + if not url.endswith('html'): + return True + if 'goings-on-about-town-app' in url: + return True + if 'something-to-be-thankful-for' in url: + return True + if '/shouts/' in url: + return True + if 'out-loud' in url: + return True + if '/rss/' in url: + return True + if '/video-' in url: + return True + self.url_list.append(url) + return False + + + def load_index_page(self,soup): + article_list = [] + for div in soup.findAll('div',attrs={'class':re.compile('^rotator')}): + h2 = div.h2 + if h2 is not None: + a = h2.a + if a is not None: + url = a['href'] + if not self.exclude_url(url): + if url.startswith('/'): + url = self.newyorker_prefix+url + byline = h2.span + if byline is not None: + author = self.tag_to_string(byline) + if author.startswith('by '): + author.replace('by ','') + byline.extract() + else: + author = '' + if h2.br is not None: + h2.br.replaceWith(' ') + title = self.tag_to_string(h2) + desc = div.find(attrs={'class':['rotator-ad-body','feature-blurb-text']}) + if desc is not None: + description = self.tag_to_string(desc) + else: + description = '' + article_list.append(dict(title=title,url=url,date='',description=description,author=author,content='')) + ul = div.find('ul','feature-blurb-links') + if ul is not None: + for li in ul.findAll('li'): + a = li.a + if a is not None: + url = a['href'] + if not self.exclude_url(url): + if url.startswith('/'): + url = self.newyorker_prefix+url + if a.br is not None: + a.br.replaceWith(' ') + title = '>>'+self.tag_to_string(a) + article_list.append(dict(title=title,url=url,date='',description='',author='',content='')) + for h3 in soup.findAll('h3','header'): + a = h3.a + if a is not None: + url = a['href'] + if not self.exclude_url(url): + if url.startswith('/'): + url = self.newyorker_prefix+url + byline = h3.span + if byline is not None: + author = self.tag_to_string(byline) + if author.startswith('by '): + author = author.replace('by ','') + byline.extract() + else: + author = '' + if h3.br is not None: + h3.br.replaceWith(' ') + title = self.tag_to_string(h3).strip() + article_list.append(dict(title=title,url=url,date='',description='',author=author,content='')) + return article_list + + def load_global_section(self,securl): + article_list = [] + try: + soup = self.index_to_soup(securl) + except: + return article_list + if '/blogs/' not in securl: + return self.load_index_page(soup) + for div in soup.findAll('div',attrs={'id':re.compile('^entry')}): + h3 = div.h3 + if h3 is not None: + a = h3.a + if a is not None: + url = a['href'] + if not self.exclude_url(url): + if url.startswith('/'): + url = self.newyorker_prefix+url + if h3.br is not None: + h3.br.replaceWith(' ') + title = self.tag_to_string(h3) + article_list.append(dict(title=title,url=url,date='',description='',author='',content='')) + return article_list + + def filter_ans(self, ans) : + total_article_count = 0 + idx = 0 + idx_max = len(ans)-1 + while idx <= idx_max: + if True: #self.verbose + self.log("Section %s: %d articles" % (ans[idx][0], len(ans[idx][1])) ) + for article in ans[idx][1]: + total_article_count += 1 + if True: #self.verbose + self.log("\t%-40.40s... \t%-60.60s..." % (article['title'].encode('cp1252','replace'), + article['url'].replace('http://m.newyorker.com','').encode('cp1252','replace'))) + idx = idx+1 + self.log( "Queued %d articles" % total_article_count ) + return ans + + + def parse_index(self): + ans = [] + try: + soup = self.index_to_soup(self.newyorker_prefix) + except: + return ans + seclist = self.load_global_nav(soup) + ans.append(('Front Page',self.load_index_page(soup))) + for (sectitle,securl) in seclist: + ans.append((sectitle,self.load_global_section(securl))) + return self.filter_ans(ans) + diff --git a/recipes/niebezpiecznik.recipe b/recipes/niebezpiecznik.recipe index 3b321772ec..135db6f4ba 100644 --- a/recipes/niebezpiecznik.recipe +++ b/recipes/niebezpiecznik.recipe @@ -1,17 +1,19 @@ from calibre.web.feeds.news import BasicNewsRecipe class Niebezpiecznik_pl(BasicNewsRecipe): - title = u'Niebezpiecznik.pl' - __author__ = 'fenuks' - description = u'Niebezpiecznik.pl – o bezpieczeństwie i nie...' - category = 'hacking, IT' - language = 'pl' + title = u'Niebezpiecznik.pl' + __author__ = 'fenuks' + description = u'Niebezpiecznik.pl – o bezpieczeństwie i nie...' + category = 'hacking, IT' + language = 'pl' oldest_article = 8 + extra_css = '.entry {margin-top: 25px;}' + remove_attrs = ['style'] max_articles_per_feed = 100 no_stylesheets = True remove_empty_feeds = True cover_url = u'http://userlogos.org/files/logos/Karmody/niebezpiecznik_01.png' remove_tags = [dict(name='div', attrs={'class':['sociable']}), dict(name='h4'), dict(attrs={'class':'similar-posts'})] keep_only_tags = [dict(name='div', attrs={'class':['title', 'entry']})] - feeds = [(u'Wiadomości', u'http://feeds.feedburner.com/niebezpiecznik/'), - ('Blog', 'http://feeds.feedburner.com/niebezpiecznik/linkblog/')] + feeds = [(u'Wiadomości', u'http://feeds.feedburner.com/niebezpiecznik/'), + ('Blog', 'http://feeds.feedburner.com/niebezpiecznik/linkblog/')] \ No newline at end of file diff --git a/recipes/nme.recipe b/recipes/nme.recipe index 6a62b00902..b652cb5e5f 100644 --- a/recipes/nme.recipe +++ b/recipes/nme.recipe @@ -12,6 +12,7 @@ class AdvancedUserRecipe1306061239(BasicNewsRecipe): max_articles_per_feed = 20 #auto_cleanup = True language = 'en_GB' + compress_news_images = True def get_cover_url(self): soup = self.index_to_soup('http://www.nme.com/component/subscribe') @@ -27,7 +28,7 @@ class AdvancedUserRecipe1306061239(BasicNewsRecipe): br.open_novisit(cov2) cover_url = str(cov2) except: - cover_url = 'http://tawanda3000.files.wordpress.com/2011/02/nme-logo.jpg' + cover_url = 'http://tawanda3000.files.wordpress.com/2011/02/nme-logo.jpg' return cover_url masthead_url = 'http://tawanda3000.files.wordpress.com/2011/02/nme-logo.jpg' diff --git a/recipes/nowiny_rybnik.recipe b/recipes/nowiny_rybnik.recipe new file mode 100644 index 0000000000..e00a72e09b --- /dev/null +++ b/recipes/nowiny_rybnik.recipe @@ -0,0 +1,31 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' + +from calibre.web.feeds.news import BasicNewsRecipe + +class NowinyRybnik(BasicNewsRecipe): + title = u'Nowiny - Rybnik' + __author__ = 'Artur Stachecki ' + language = 'pl' + description = u'Tygodnik Regionalny NOWINY. Ogłoszenia drobne, wiadomości i wydarzenia z regionu Rybnika i okolic' + oldest_article = 7 + masthead_url = 'http://www.nowiny.rybnik.pl/logo/logo.jpg' + max_articles_per_feed = 100 + simultaneous_downloads = 5 + remove_javascript = True + no_stylesheets = True + + keep_only_tags = [(dict(name='div', attrs={'id': 'drukuj'}))] + + remove_tags = [] + remove_tags.append(dict(name='div', attrs={'id': 'footer'})) + + feeds = [(u'Wszystkie artykuły', u'http://www.nowiny.rybnik.pl/rss,artykuly,dzial,0,miasto,0,ile,25.xml')] + + def preprocess_html(self, soup): + for alink in soup.findAll('a'): + if alink.string is not None: + tstr = alink.string + alink.replaceWith(tstr) + return soup diff --git a/recipes/osw.recipe b/recipes/osw.recipe new file mode 100644 index 0000000000..8022f3e346 --- /dev/null +++ b/recipes/osw.recipe @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__author__ = 'teepel ' + +''' +http://www.osw.waw.pl - Osrodek studiow wschodnich +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class OSW_Recipe(BasicNewsRecipe): + + language = 'pl' + title = u'Ośrodek Studiów Wschodnich' + __author__ = 'teepel ' + INDEX='http://www.osw.waw.pl' + description = u'Ośrodek Studiów Wschodnich im. Marka Karpia. Centre for Eastern Studies.' + category = u'News' + oldest_article = 7 + max_articles_per_feed = 100 + cover_url='' + remove_empty_feeds= True + no_stylesheets=True + remove_javascript = True + simultaneous_downloads = 5 + + keep_only_tags =[] + #this line should show title of the article, but it doesnt work + keep_only_tags.append(dict(name = 'h1', attrs = {'class' : 'print-title'})) + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'print-submitted'})) + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'print-content'})) + + remove_tags =[] + remove_tags.append(dict(name = 'table', attrs = {'id' : 'attachments'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'print-submitted'})) + + feeds = [(u'OSW', u'http://www.osw.waw.pl/pl/rss.xml')] + + def print_version(self, url): + return url.replace('http://www.osw.waw.pl/pl/', 'http://www.osw.waw.pl/pl/print/') diff --git a/recipes/osworld_pl.recipe b/recipes/osworld_pl.recipe index 7784a271e0..20cb546e35 100644 --- a/recipes/osworld_pl.recipe +++ b/recipes/osworld_pl.recipe @@ -1,11 +1,12 @@ from calibre.web.feeds.news import BasicNewsRecipe class OSWorld(BasicNewsRecipe): - title = u'OSWorld.pl' - __author__ = 'fenuks' - description = u'OSWorld.pl to serwis internetowy, dzięki któremu poznasz czym naprawdę jest Open Source. Serwis poświęcony jest wolnemu oprogramowaniu jak linux mint, centos czy ubunty. Znajdziecie u nasz artykuły, unity oraz informacje o certyfikatach CACert. OSWorld to mały świat wielkich systemów!' - category = 'OS, IT, open source, Linux' - language = 'pl' + title = u'OSWorld.pl' + __author__ = 'fenuks' + description = u'OSWorld.pl to serwis internetowy, dzięki któremu poznasz czym naprawdę jest Open Source. Serwis poświęcony jest wolnemu oprogramowaniu jak linux mint, centos czy ubunty. Znajdziecie u nasz artykuły, unity oraz informacje o certyfikatach CACert. OSWorld to mały świat wielkich systemów!' + category = 'OS, IT, open source, Linux' + language = 'pl' cover_url = 'http://osworld.pl/wp-content/uploads/osworld-kwadrat-128x111.png' + extra_css = 'img.alignleft {float: left; margin-right: 5px;}' oldest_article = 7 max_articles_per_feed = 100 no_stylesheets = True @@ -14,7 +15,7 @@ class OSWorld(BasicNewsRecipe): keep_only_tags = [dict(id=['dzial', 'posts'])] remove_tags = [dict(attrs={'class':'post-comments'})] remove_tags_after = dict(attrs={'class':'entry clr'}) - feeds = [(u'Artyku\u0142y', u'http://osworld.pl/category/artykuly/feed/'), (u'Nowe wersje', u'http://osworld.pl/category/nowe-wersje/feed/')] + feeds = [(u'Artyku\u0142y', u'http://osworld.pl/category/artykuly/feed/'), (u'Nowe wersje', u'http://osworld.pl/category/nowe-wersje/feed/')] def append_page(self, soup, appendtag): tag = appendtag.find(attrs={'id':'paginacja'}) @@ -30,4 +31,4 @@ class OSWorld(BasicNewsRecipe): def preprocess_html(self, soup): self.append_page(soup, soup.body) - return soup + return soup \ No newline at end of file diff --git a/recipes/pc_centre_pl.recipe b/recipes/pc_centre_pl.recipe index f4eccd70a0..6f113bfcc6 100644 --- a/recipes/pc_centre_pl.recipe +++ b/recipes/pc_centre_pl.recipe @@ -1,20 +1,21 @@ from calibre.web.feeds.news import BasicNewsRecipe class PC_Centre(BasicNewsRecipe): - title = u'PC Centre' + title = u'PC Centre' oldest_article = 7 max_articles_per_feed = 100 - __author__ = 'fenuks' - description = u'Portal komputerowy, a w nim: testy sprzętu komputerowego, recenzje gier i oprogramowania. a także opisy produktów związanych z komputerami.' - category = 'IT' - language = 'pl' + __author__ = 'fenuks' + description = u'Portal komputerowy, a w nim: testy sprzętu komputerowego, recenzje gier i oprogramowania. a także opisy produktów związanych z komputerami.' + category = 'IT' + language = 'pl' masthead_url= 'http://pccentre.pl/views/images/logo.gif' cover_url= 'http://pccentre.pl/views/images/logo.gif' no_stylesheets = True remove_empty_feeds = True + ignore_duplicate_articles = {'title', 'url'} #keep_only_tags= [dict(id='content')] #remove_tags=[dict(attrs={'class':['ikony r', 'list_of_content', 'dot accordion']}), dict(id='comments')] remove_tags=[dict(attrs={'class':'logo_print'})] - feeds = [(u'Aktualno\u015bci', u'http://pccentre.pl/backend.php'), (u'Publikacje', u'http://pccentre.pl/backend.php?mode=a'), (u'Sprz\u0119t komputerowy', u'http://pccentre.pl/backend.php?mode=n§ion=2'), (u'Oprogramowanie', u'http://pccentre.pl/backend.php?mode=n§ion=3'), (u'Gry komputerowe i konsole', u'http://pccentre.pl/backend.php?mode=n§ion=4'), (u'Internet', u'http://pccentre.pl/backend.php?mode=n§ion=7'), (u'Bezpiecze\u0144stwo', u'http://pccentre.pl/backend.php?mode=n§ion=5'), (u'Multimedia', u'http://pccentre.pl/backend.php?mode=n§ion=6'), (u'Biznes', u'http://pccentre.pl/backend.php?mode=n§ion=9')] + feeds = [(u'Aktualno\u015bci', u'http://pccentre.pl/backend.php'), (u'Publikacje', u'http://pccentre.pl/backend.php?mode=a'), (u'Sprz\u0119t komputerowy', u'http://pccentre.pl/backend.php?mode=n§ion=2'), (u'Oprogramowanie', u'http://pccentre.pl/backend.php?mode=n§ion=3'), (u'Gry komputerowe i konsole', u'http://pccentre.pl/backend.php?mode=n§ion=4'), (u'Internet', u'http://pccentre.pl/backend.php?mode=n§ion=7'), (u'Bezpiecze\u0144stwo', u'http://pccentre.pl/backend.php?mode=n§ion=5'), (u'Multimedia', u'http://pccentre.pl/backend.php?mode=n§ion=6'), (u'Biznes', u'http://pccentre.pl/backend.php?mode=n§ion=9')] def print_version(self, url): return url.replace('show', 'print') \ No newline at end of file diff --git a/recipes/ppe_pl.recipe b/recipes/ppe_pl.recipe new file mode 100644 index 0000000000..2edc611ad7 --- /dev/null +++ b/recipes/ppe_pl.recipe @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' + +from calibre.web.feeds.news import BasicNewsRecipe + +class ppeRecipe(BasicNewsRecipe): + __author__ = u'Artur Stachecki ' + language = 'pl' + + title = u'ppe.pl' + category = u'News' + description = u'Portal o konsolach i grach wideo.' + cover_url='' + remove_empty_feeds= True + no_stylesheets=True + oldest_article = 1 + max_articles_per_feed = 100000 + recursions = 0 + no_stylesheets = True + remove_javascript = True + simultaneous_downloads = 2 + + keep_only_tags =[] + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'news-heading'})) + keep_only_tags.append(dict(name = 'div', attrs = {'class' : 'tresc-poziom'})) + + remove_tags =[] + remove_tags.append(dict(name = 'div', attrs = {'class' : 'bateria1'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'bateria2'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'bateria3'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'news-photo'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'fbl'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'info'})) + remove_tags.append(dict(name = 'div', attrs = {'class' : 'links'})) + + remove_tags.append(dict(name = 'div', attrs = {'style' : 'padding: 4px'})) + + feeds = [ + ('Newsy', 'feed://ppe.pl/rss/rss.xml'), + ] diff --git a/recipes/presseurop.recipe b/recipes/presseurop.recipe new file mode 100644 index 0000000000..ea06eb0c32 --- /dev/null +++ b/recipes/presseurop.recipe @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +''' +www.presseurop.eu/pl +''' + +__license__ = 'GPL v3' +__author__ = 'teepel ' + +from calibre.web.feeds.news import BasicNewsRecipe +import re + +class presseurop(BasicNewsRecipe): + title = u'Presseurop' + description = u'Najlepsze artykuły z prasy europejskiej' + language = 'pl' + oldest_article = 7 + max_articles_per_feed = 100 + auto_cleanup = True + + feeds = [ + (u'Polityka', u'http://www.presseurop.eu/pl/taxonomy/term/1/%2A/feed'), + (u'Społeczeństwo', u'http://www.presseurop.eu/pl/taxonomy/term/2/%2A/feed'), + (u'Gospodarka', u'http://www.presseurop.eu/pl/taxonomy/term/3/%2A/feed'), + (u'Kultura i debaty', u'http://www.presseurop.eu/pl/taxonomy/term/4/%2A/feed'), + (u'UE i Świat', u'http://www.presseurop.eu/pl/taxonomy/term/5/%2A/feed') + ] + + + preprocess_regexps = [ + (re.compile(r'\|.*', re.DOTALL|re.IGNORECASE), + lambda match: ''), +] diff --git a/recipes/publico.recipe b/recipes/publico.recipe index 7d913cbbe0..d221100b39 100644 --- a/recipes/publico.recipe +++ b/recipes/publico.recipe @@ -23,8 +23,8 @@ class PublicoPT(BasicNewsRecipe): remove_empty_feeds = True extra_css = ' body{font-family: Arial,Helvetica,sans-serif } img{margin-bottom: 0.4em} ' - keep_only_tags = [dict(attrs={'class':['content-noticia-title','artigoHeader','ECOSFERA_MANCHETE','noticia','textoPrincipal','ECOSFERA_texto_01']})] - remove_tags = [dict(attrs={'class':['options','subcoluna']})] + keep_only_tags = [dict(attrs={'class':['hentry article single']})] + remove_tags = [dict(attrs={'class':['entry-options entry-options-above group','entry-options entry-options-below group', 'module tag-list']})] feeds = [ (u'Geral', u'http://feeds.feedburner.com/publicoRSS'), diff --git a/recipes/res_publica.recipe b/recipes/res_publica.recipe new file mode 100644 index 0000000000..e0d9ebbb56 --- /dev/null +++ b/recipes/res_publica.recipe @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' + +from calibre.web.feeds.news import BasicNewsRecipe + +class ResPublicaNowaRecipe(BasicNewsRecipe): + __license__ = 'GPL v3' + __author__ = u'Artur Stachecki ' + language = 'pl' + version = 1 + + title = u'Res Publica Nowa' + category = u'News' + description = u'Portal kulturalno-społecznego kwartalnika o profilu liberalnym, wydawany przez Fundację Res Publica' + cover_url='' + remove_empty_feeds= True + no_stylesheets=True + oldest_article = 7 + max_articles_per_feed = 100000 + recursions = 0 + no_stylesheets = True + remove_javascript = True + simultaneous_downloads = 5 + + feeds = [ + ('Artykuly', 'feed://publica.pl/feed'), + ] + + def preprocess_html(self, soup): + for alink in soup.findAll('a'): + if alink.string is not None: + tstr = alink.string + alink.replaceWith(tstr) + return soup diff --git a/recipes/san_fran_chronicle.recipe b/recipes/san_fran_chronicle.recipe index cfdf0b07f0..37f15dbe87 100644 --- a/recipes/san_fran_chronicle.recipe +++ b/recipes/san_fran_chronicle.recipe @@ -7,7 +7,6 @@ sfgate.com ''' from calibre.web.feeds.news import BasicNewsRecipe -import re class SanFranciscoChronicle(BasicNewsRecipe): title = u'San Francisco Chronicle' @@ -19,16 +18,7 @@ class SanFranciscoChronicle(BasicNewsRecipe): max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False - - - - remove_tags_before = {'id':'printheader'} - - remove_tags = [ - dict(name='div',attrs={'id':'printheader'}) - ,dict(name='a', attrs={'href':re.compile('http://ads\.pheedo\.com.*')}) - ,dict(name='div',attrs={'id':'footer'}) - ] + auto_cleanup = True extra_css = ''' h1{font-family :Arial,Helvetica,sans-serif; font-size:large;} @@ -43,33 +33,13 @@ class SanFranciscoChronicle(BasicNewsRecipe): ''' feeds = [ - (u'Top News Stories', u'http://www.sfgate.com/rss/feeds/news.xml') + (u'Bay Area News', u'http://www.sfgate.com/bayarea/feed/Bay-Area-News-429.php'), + (u'City Insider', u'http://www.sfgate.com/default/feed/City-Insider-Blog-573.php'), + (u'Crime Scene', u'http://www.sfgate.com/rss/feed/Crime-Scene-Blog-599.php'), + (u'Education News', u'http://www.sfgate.com/education/feed/Education-News-from-SFGate-430.php'), + (u'National News', u'http://www.sfgate.com/rss/feed/National-News-RSS-Feed-435.php'), + (u'Weird News', u'http://www.sfgate.com/weird/feed/Weird-News-RSS-Feed-433.php'), + (u'World News', u'http://www.sfgate.com/rss/feed/World-News-From-SFGate-432.php'), ] - def print_version(self,url): - url= url +"&type=printable" - return url - - def get_article_url(self, article): - print str(article['title_detail']['value']) - url = article.get('guid',None) - url = "http://www.sfgate.com/cgi-bin/article.cgi?f="+url - if "Presented By:" in str(article['title_detail']['value']): - url = '' - return url - - - - - - - - - - - - - - - diff --git a/recipes/singtaohk.recipe b/recipes/singtaohk.recipe index d830381731..bb76c335a0 100644 --- a/recipes/singtaohk.recipe +++ b/recipes/singtaohk.recipe @@ -1,30 +1,30 @@ +# vim:fileencoding=UTF-8 +from __future__ import unicode_literals __license__ = 'GPL v3' -__copyright__ = '2011, Eddie Lau' +__copyright__ = '2011-2013, Eddie Lau' # data source: normal, mobile __Source__ = 'mobile' # please replace the following "True" with "False". (Default: True) __MakePeriodical__ = True # Turn below to True if your device supports display of CJK titles (Default: False) -__UseChineseTitle__ = False +__UseChineseTitle__ = True # Set it to False if you want to skip images (Default: True) __KeepImages__ = True # Set it to True if you want to include a summary in Kindle's article view (Default: False) -__IncludeSummary__ = False +__IncludeSummary__ = True # Set it to True if you want thumbnail images in Kindle's article view (Default: True) __IncludeThumbnails__ = True ''' Change Log: +2013/03/31 -- fix cover retrieval code and heading size, and remove   in summary 2011/12/29 -- first version done -TODO: -* use alternative source at http://m.singtao.com/index.php ''' from calibre.utils.date import now as nowf import os, datetime, re -from datetime import date from calibre.web.feeds.recipes import BasicNewsRecipe from contextlib import nested from calibre.ebooks.BeautifulSoup import BeautifulSoup @@ -41,7 +41,7 @@ class STHKRecipe(BasicNewsRecipe): title = 'Sing Tao Daily - Hong Kong' description = 'Hong Kong Chinese Newspaper (http://singtao.com)' 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%;} td[class=caption] {font-size:50%;} td[class=bodyhead]{font-weight:bold; font-size:150%;} td[class=stmobheadline]{font-weight:bold; font-size:150%;}' + extra_css = 'img {display: block; margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px; max-height:90%;} td[class=caption] {font-size:50%;} td[class=bodyhead]{font-weight:bold; font-size:150%;} td[class=stmobheadline]{font-weight:bold; font-size:200%;}' masthead_url = 'http://upload.wikimedia.org/wikipedia/en/d/dd/Singtao-usa.png' if __Source__ == 'normal': keep_only_tags = [dict(name='td', attrs={'class':['bodyhead','bodytext']})] @@ -96,17 +96,13 @@ class STHKRecipe(BasicNewsRecipe): return self.get_dtlocal().strftime("%d") def get_cover_url(self): - #cover = 'http://singtao.com/media/a/a(2660).jpg' # for 2011/12/29 - base = 2660 - todaydate = date(int(self.get_fetchyear()), int(self.get_fetchmonth()), int(self.get_fetchday())) - diff = todaydate - date(2011, 12, 29) - base = base + int(diff.total_seconds()/(3600*24)) - cover = 'http://singtao.com/media/a/a(' + str(base) +').jpg' + soup = self.index_to_soup('http://m.singtao.com/') + cover = soup.find(attrs={'class':'special'}).get('src', False) br = BasicNewsRecipe.get_browser(self) try: br.open(cover) except: - cover = 'http://singtao.com/images/stlogo.gif' + cover = None return cover def parse_index(self): @@ -289,11 +285,11 @@ class STHKRecipe(BasicNewsRecipe): # the text may or may not be enclosed in

tag paras = articlebody.findAll('p') if not paras: - paras = articlebody + paras = articlebody textFound = False for p in paras: if not textFound: - summary_candidate = self.tag_to_string(p).strip() + summary_candidate = self.tag_to_string(p).strip().replace(' ', '') if len(summary_candidate) > 0: summary_candidate = summary_candidate.replace(u'(\u661f\u5cf6\u65e5\u5831\u5831\u9053)', '', 1) article.summary = article.text_summary = summary_candidate @@ -489,3 +485,4 @@ class STHKRecipe(BasicNewsRecipe): + diff --git a/recipes/sport_pl.recipe b/recipes/sport_pl.recipe new file mode 100644 index 0000000000..dd7faccdb0 --- /dev/null +++ b/recipes/sport_pl.recipe @@ -0,0 +1,71 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__copyright__ = 'teepel 2012' + +''' +sport.pl +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class sport_pl(BasicNewsRecipe): + title = 'Sport.pl' + __author__ = 'teepel ' + language = 'pl' + description =u'Największy portal sportowy w Polsce. Wiadomości sportowe z najważniejszych wydarzeń, relacje i wyniki meczów na żywo.' + masthead_url='http://press.gazeta.pl/file/mediakit/154509/c8/sportpl.jpg' + oldest_article = 1 + max_articles_per_feed = 100 + remove_javascript=True + no_stylesheets=True + remove_empty_feeds = True + ignore_duplicate_articles = {'title', 'url'} + keep_only_tags =[] + keep_only_tags.append(dict(name = 'div', attrs = {'id' : 'article'})) + + remove_tags =[] + remove_tags.append(dict(name = 'a', attrs = {'href' : 'www.gazeta.pl'})) + + feeds = [ + (u'Wszystkie wiadomości', u'http://rss.gazeta.pl/pub/rss/sport.xml'), + (u'Piłka nożna', u'http://www.sport.pl/pub/rss/sport/pilka_nozna.htm'), + (u'F1', u'http://www.sport.pl/pub/rss/sportf1.htm'), + (u'Tenis', u'http://serwisy.gazeta.pl/pub/rss/tenis.htm'), + (u'Siatkówka', u'http://gazeta.pl.feedsportal.com/c/32739/f/611628/index.rss'), + (u'Koszykówka', u'http://gazeta.pl.feedsportal.com/c/32739/f/611647/index.rss'), + (u'Piłka ręczna', u'http://gazeta.pl.feedsportal.com/c/32739/f/611635/index.rss'), + (u'Inne sporty', u'http://gazeta.pl.feedsportal.com/c/32739/f/611649/index.rss'), + ] + def parse_feeds(self): + feeds = BasicNewsRecipe.parse_feeds(self) + for feed in feeds: + for article in feed.articles[:]: + if '[ZDJĘCIA]' in article.title: + article.title = article.title.replace('[ZDJĘCIA]','') + elif '[WIDEO]' in article.title: + article.title = article.title.replace('[WIDEO]','') + return feeds + + def print_version(self, url): + if 'feedsportal' in url: + segment = url.split('/') + urlPart = segment[-2] + urlPart = urlPart.replace('0L0Ssport0Bpl0C','') + urlPart = urlPart.replace('0C10H','/') + urlPart = urlPart.replace('0H',',') + urlPart = urlPart.replace('0I','_') + urlPart = urlPart.replace('A','') + segment1 = urlPart.split('/') + seg1 = segment1[0] + seg2 = segment1[1] + segment2 = seg2.split(',') + part = segment2[0] + ',' + segment2[1] + return 'http://www.sport.pl/' + seg1 + '/2029020,' + part + '.html' + else: + segment = url.split('/') + part2 = segment[-2] + part1 = segment[-1] + segment2 = part1.split(',') + part = segment2[1] + ',' + segment2[2] + return 'http://www.sport.pl/' + part2 + '/2029020,' + part + '.html' diff --git a/recipes/sportowefakty.recipe b/recipes/sportowefakty.recipe new file mode 100644 index 0000000000..b4186d3283 --- /dev/null +++ b/recipes/sportowefakty.recipe @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' + +import re +from calibre.web.feeds.news import BasicNewsRecipe +from calibre.utils.magick import Image + +class sportowefakty(BasicNewsRecipe): + title = u'SportoweFakty' + __author__ = 'Artur Stachecki , Tomasz Długosz ' + language = 'pl' + description = u'Najważniejsze informacje sportowe z kraju i ze świata, relacje, komentarze, wywiady, zdjęcia!' + oldest_article = 1 + masthead_url='http://www.sportowefakty.pl/images/logo.png' + max_articles_per_feed = 100 + simultaneous_downloads = 5 + use_embedded_content=False + remove_javascript=True + no_stylesheets=True + ignore_duplicate_articles = {'title', 'url'} + + keep_only_tags = [dict(attrs = {'class' : 'box-article'})] + remove_tags =[] + remove_tags.append(dict(attrs = {'class' : re.compile(r'^newsStream')})) + remove_tags.append(dict(attrs = {'target' : '_blank'})) + + feeds = [ + (u'Piłka Nożna', u'http://www.sportowefakty.pl/pilka-nozna/index.rss'), + (u'Koszykówka', u'http://www.sportowefakty.pl/koszykowka/index.rss'), + (u'Żużel', u'http://www.sportowefakty.pl/zuzel/index.rss'), + (u'Siatkówka', u'http://www.sportowefakty.pl/siatkowka/index.rss'), + (u'Zimowe', u'http://www.sportowefakty.pl/zimowe/index.rss'), + (u'Hokej', u'http://www.sportowefakty.pl/hokej/index.rss'), + (u'Moto', u'http://www.sportowefakty.pl/moto/index.rss'), + (u'Tenis', u'http://www.sportowefakty.pl/tenis/index.rss') + ] + + def get_article_url(self, article): + link = article.get('link', None) + if 'utm_source' in link: + return link.split('?utm')[0] + else: + return link + + def print_version(self, url): + print_url = url + '/drukuj' + return print_url + + def preprocess_html(self, soup): + head = soup.find('h1') + if 'Fotorelacja' in self.tag_to_string(head): + return None + else: + for alink in soup.findAll('a'): + if alink.string is not None: + tstr = alink.string + alink.replaceWith(tstr) + return soup + + def postprocess_html(self, soup, first): + for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')): + iurl = tag['src'] + img = Image() + img.open(iurl) + if img < 0: + raise RuntimeError('Out of memory') + img.type = "GrayscaleType" + img.save(iurl) + return soup diff --git a/recipes/stopklatka.recipe b/recipes/stopklatka.recipe index ace28087c4..28c92a2453 100644 --- a/recipes/stopklatka.recipe +++ b/recipes/stopklatka.recipe @@ -1,25 +1,46 @@ +__license__ = 'GPL v3' from calibre.web.feeds.news import BasicNewsRecipe -import re -class Stopklatka(BasicNewsRecipe): - title = u'Stopklatka' - __author__ = 'fenuks' - description = u'Stopklatka.pl to najdłużej działający polski portal filmowy. Baza filmów, seriali i aktorów, repertuar kin, program tv, wydarzenia ze świata filmu' - category = 'movies' - language = 'pl' +from calibre.ebooks.BeautifulSoup import Comment +class Stopklatka_pl(BasicNewsRecipe): + title = u'Stopklatka.pl' + __author__ = 'fenuks' + description = u'Stopklatka.pl to najdłużej działający polski portal filmowy. Baza filmów, seriali i aktorów, repertuar kin, program tv, wydarzenia ze świata filmu' + category = 'movies' + language = 'pl' + encoding = 'utf-8' + extra_css = 'img {display: block;} ul {list-style-type: none;} li {display: inline;}' + cover_url = 'http://static1.stopklatka.pl/images/20/19/11501.jpg' + use_embedded_content = False oldest_article = 7 - masthead_url= 'http://img.stopklatka.pl/logo/logo-3.gif' - cover_url= 'http://img.stopklatka.pl/logo/logo-3.gif' max_articles_per_feed = 100 no_stylesheets = True - preprocess_regexps = [(re.compile(ur'Wersja internetowa dostępna jest pod adresem:.*', re.DOTALL), lambda match: ''), (re.compile(ur'', re.DOTALL), lambda match: '') ] remove_empty_feeds = True - remove_tags = [dict(name='img', attrs={'alt':'logo'})] - feeds = [(u'Wydarzenia', u'http://rss.stopklatka.pl/wydarzenia.rss')] + remove_javascript = True + remove_attributes = ['style', 'font'] + ignore_duplicate_articles = {'title', 'url'} - def print_version(self, url): - link_id = re.search(r'wi=(?P\d+)', url) - if link_id: - return 'http://www.stopklatka.pl/narzedzia/drukuj.asp?typ=wydarzenie&id=' + link_id.group('id') - else: - return url + keep_only_tags = [dict(attrs={'class':'asset-full-content default-asset-publisher show-asset-title'})] + remove_tags = [dict(attrs={'class':['metadata-entry metadata-tags', 'print-action', 'asset-flag', 'asset-ratings']}), dict(id='contest')] + #remove_tags_after = dict() + #remove_tags_before = dict() + feeds = [(u'Wiadomo\u015bci', u'http://stopklatka.pl/wiadomosci/-/asset_publisher/Hl7x4Ku4GpZj/rss?p_p_cacheability=cacheLevelPage'), (u'Artyku\u0142y', u'http://stopklatka.pl/artykuly/-/asset_publisher/pKhn5s0IxqSc/rss?p_p_cacheability=cacheLevelPage'), (u'Premiery i zapowiedzi', u'http://stopklatka.pl/premiery-i-zapowiedzi?p_p_id=eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=3&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13393201&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13760176&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=15238425&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13470227&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13913324&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=20234402&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13917041&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13905169&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=14253975&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=21586017&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13540662&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=12999052&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=45280408&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=14826890&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13459998&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13070805&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=20209965&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=21741457&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=35577381&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_assetEntryIds=13530138&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13392987%2Cmartwe-zlo&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13760162%2Cuklad-zamkniety&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F15238403%2Cwszyscy-w-naszej-rodzinie&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13470213%2Cdonoma&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13913310%2Ccristiada&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F20234381%2Craj-wiara&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13917027%2Cintruz&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13905155%2Cspring-breakers&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F14253957%2Ckrudowie&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F21586004%2Cswieta-czworca&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13540648%2Ckwartet&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F12999038%2Cimagine&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F45280404%2Cdom-na-kolkach&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F14826876%2Cg-i-joe-odwet&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13459984%2Cnieobliczalni&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13070591%2Csamotny-port-milosc&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F20209952%2Czanim-noc-nas-nie-rozdzieli&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F21741444%2Chemel&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35577377%2Czywie-bielarus-&_eventsearch_WAR_eventsearchportlet_INSTANCE_FLRWmpE7H8IL_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F13530124%2Cpanaceum'), (u'Recenzje filmowe', u'http://stopklatka.pl/box-office/-/asset_publisher/3yxqotUEiqHJ/rss?p_p_cacheability=cacheLevelPage'), (u'Recenzje', u'http://stopklatka.pl/recenzje/-/asset_publisher/5oZ3s2J3L0tG/rss?p_p_cacheability=cacheLevelPage'), (u'Gwiazdy', u'http://stopklatka.pl/czerwony-dywan/-/asset_publisher/PqN7MDEGWGvh/rss?p_p_cacheability=cacheLevelPage'), (u'Wywiady Stopklatki', u'http://stopklatka.pl/wywiady/-/asset_publisher/uVh3OrZCaLd7/rss?p_p_cacheability=cacheLevelPage'), (u'Prosto z Hollywood', u'http://stopklatka.pl/wywiady-z-hollywood/-/asset_publisher/YsbU0JSoxb9G/rss?p_p_cacheability=cacheLevelPage'), (u'Plotki', u'http://stopklatka.pl/czerwony-dywan/-/asset_publisher/XuF8EGAkVeTa/rss?p_p_cacheability=cacheLevelPage'), (u'Box Office Polska', u'http://stopklatka.pl/box-office?p_p_id=eventsearch_WAR_eventsearchportlet_INSTANCE_Gqb98cI5dgSJ&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=5&_eventsearch_WAR_eventsearchportlet_INSTANCE_Gqb98cI5dgSJ_assetEntryIds=47982267&_eventsearch_WAR_eventsearchportlet_INSTANCE_Gqb98cI5dgSJ_assetEntryIds=46685247&_eventsearch_WAR_eventsearchportlet_INSTANCE_Gqb98cI5dgSJ_assetEntryIds=45280313&_eventsearch_WAR_eventsearchportlet_INSTANCE_Gqb98cI5dgSJ_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47982263%2Cbox-office-weekendowy-polska-15-03-2013-17-03-2013&_eventsearch_WAR_eventsearchportlet_INSTANCE_Gqb98cI5dgSJ_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F46685243%2Cbox-office-weekendowy-polska-08-03-2013-10-03-2013&_eventsearch_WAR_eventsearchportlet_INSTANCE_Gqb98cI5dgSJ_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F45280309%2Cbox-office-weekendowy-polska-01-03-2013-03-03-2013'), (u'Box Office USA', u'http://stopklatka.pl/box-office?p_p_id=eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_pos=2&p_p_col_count=5&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_assetEntryIds=49047234&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_assetEntryIds=48879358&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_assetEntryIds=47605057&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_assetEntryIds=47809980&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_assetEntryIds=46505246&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F49047230%2Cbox-office-weekendowy-stany-zjednoczone-22-03-2013-24-03-2013&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F48879354%2Cbox-office-weekendowy-stany-zjednoczone-22-03-2013-24-03-2013-estymacja-&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47605053%2Cbox-office-weekendowy-stany-zjednoczone-15-03-2013-17-03-2013-estymacja-&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47809976%2Cbox-office-weekendowy-stany-zjednoczone-15-03-2013-17-03-2013&_eventsearch_WAR_eventsearchportlet_INSTANCE_24AXs0agMxJd_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F46505242%2Cbox-office-weekendowy-stany-zjednoczone-08-03-2013-10-03-2013'), (u'Relacje', u'http://stopklatka.pl/czerwony-dywan/-/asset_publisher/IkgAkSFxLWV2/rss?p_p_cacheability=cacheLevelPage'), (u'Kalendarium imprez', u'http://stopklatka.pl/kalendarium-imprez?p_p_id=eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=3&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47628974&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47627805&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=45317244&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=48884855&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47629292&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=48884742&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35482058&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47627893&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35482076&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47627838&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=48167620&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35482067&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47811744&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35482049&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47629615&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=45088670&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47628531&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35481950&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35481496&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35482022&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=19323743&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47628034&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=47628064&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=45088819&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35482031&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35481415&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35481977&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=19323617&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35481932&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_assetEntryIds=35481995&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47628970%2C4-festiwal-filmow-swiata-trzy-zywioly&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47627801%2Cwielka-podroz-krudow&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F45317240%2C6-przeglad-kina-rosyjskiego-nowe-kino-rosyjskie-&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F48884851%2C2-1-nowy-cykl-spotkan-literatury-z-filmem&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47629288%2C5-festiwal-polskich-filmow-krotkometrazowych-short-waves&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F48884738%2Cmoico-enjoy-movies-przeglad-filmow-klasy-b-we-wroclawiu&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35482054%2C1-ogolnopolski-festiwal-polskiej-animacji-o-pla-2013-&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47627889%2Cviii-festiwal-filmow-afrykanskich-afrykamera-2013&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35482072%2C6-miedzynarodowy-festwial-kina-niezaleznego-off-plus-camera&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47627834%2C11-przeglad-filmow-studenckich-z-lodzkiej-filmowki-lodzia-po-wisle-&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F48167616%2Cweze-2013&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35482063%2Cxiv-festiwal-kina-amatorskiego-i-niezaleznego-kan&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47811740%2Cv-festiwal-muzyki-filmowej-krzysztofa-komedy&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35482045%2Ckonkurs-scenariuszowy-script-pro-2013&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47629611%2C9-miedzynarodowy-festiwal-filmowy-%E2%80%9Ezydowskie-motywy%E2%80%9D&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F45088666%2C15-przeglad-filmowy-cieszyn-kino-na-granicy-&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47628527%2Cdzien-filmowca-filmmaker-s-day&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35481946%2C10-planete-doc-film-festival&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35481492%2C66-miedzynarodowy-festiwal-filmowy-w-cannes&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35482018%2C16-festiwal-filmow-kultowych&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F19323739%2C53-krakowski-festiwal-filmowy&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47628030%2C4-festiwal-filmow-mlodziezowych-18&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47628060%2Cvii-superorbitalny-festiwal-filmow-amatorskich-soffa&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F45088815%2Cxv-miedzynarodowy-festiwal-filmow-przyrodniczych-im-wlodzimierza-puchalskiego&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35482027%2C32-koszalinski-festiwal-debiutow-filmowych-mlodzi-i-film-&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35481411%2C6-miedzynarodowy-festiwal-filmow-animowanych-animator-&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35481973%2C13-miedzynarodowy-festiwal-filmowy-sopot-film-festival&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F19323613%2C13-miedzynarodowy-festiwal-filmowy-t-mobile-nowe-horyzonty&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35481928%2C7-festiwal-filmu-i-sztuki-dwa-brzegi-w-kazimierzu-dolnym-i-janowcu&_eventsearch_WAR_eventsearchportlet_INSTANCE_rHUXlm2Y2veh_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F35481991%2C3-miedzynarodowy-festiwal-filmu-i-muzyki-transatlantyk'), (u'Konkursy', u'http://stopklatka.pl/konkursy?p_p_id=eventsearch_WAR_eventsearchportlet_INSTANCE_Yks1FKgVbrOA&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_pos=3&p_p_col_count=5&_eventsearch_WAR_eventsearchportlet_INSTANCE_Yks1FKgVbrOA_assetEntryIds=47091950&_eventsearch_WAR_eventsearchportlet_INSTANCE_Yks1FKgVbrOA_assetEntryIds=48879762&_eventsearch_WAR_eventsearchportlet_INSTANCE_Yks1FKgVbrOA_assetEntryIds=48880109&_eventsearch_WAR_eventsearchportlet_INSTANCE_Yks1FKgVbrOA_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F47091941%2Cksiazki-dwie-kobiety-&_eventsearch_WAR_eventsearchportlet_INSTANCE_Yks1FKgVbrOA_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F48879753%2Cdvd-rozmowy-noca-&_eventsearch_WAR_eventsearchportlet_INSTANCE_Yks1FKgVbrOA_urls=http%3A%2F%2Fstopklatka.pl%2F-%2F48880000%2Cdvd-milosc-'), (u'Komiks Stopklatki', u'http://stopklatka.pl/komiks/-/asset_publisher/pKhn5s0IxqSc/rss?p_p_cacheability=cacheLevelPage')] + def append_page(self, soup, appendtag): + tag = soup.find('a', attrs={'class': 'next'}) + if tag: + while tag: + url = tag['href'] + soup2 = self.index_to_soup(url) + tag = soup2.find('a', attrs={'class': 'next'}) + pagetext = soup2.find(attrs={'class': 'journal-content-article'}) + comments = pagetext.findAll(text=lambda text:isinstance(text, Comment)) + for comment in comments: + comment.extract() + pos = len(appendtag.contents) + appendtag.insert(pos, pagetext) + appendtag.find('a', attrs={'class': 'next'}).extract() + + + def preprocess_html(self, soup): + self.append_page(soup, soup.body) + return soup \ No newline at end of file diff --git a/recipes/tablety_pl.recipe b/recipes/tablety_pl.recipe index 97a44f81c7..c0d8b66c3d 100644 --- a/recipes/tablety_pl.recipe +++ b/recipes/tablety_pl.recipe @@ -1,18 +1,20 @@ from calibre.web.feeds.news import BasicNewsRecipe import re class Tablety_pl(BasicNewsRecipe): - title = u'Tablety.pl' - __author__ = 'fenuks' - description = u'Tablety, gry i aplikacje na tablety.' + title = u'Tablety.pl' + __author__ = 'fenuks' + description = u'Tablety, gry i aplikacje na tablety.' masthead_url= 'http://www.tablety.pl/wp-content/themes/kolektyw/img/logo.png' - cover_url = 'http://www.tablety.pl/wp-content/themes/kolektyw/img/logo.png' - category = 'IT' - language = 'pl' - use_embedded_content=True + cover_url = 'http://www.tablety.pl/wp-content/themes/kolektyw/img/logo.png' + category = 'IT' + language = 'pl' + use_embedded_content = False + no_stylesheets = True oldest_article = 8 max_articles_per_feed = 100 preprocess_regexps = [(re.compile(ur'

Przeczytaj także.*?

', re.DOTALL), lambda match: ''), (re.compile(ur'

Przeczytaj koniecznie.*?

', re.DOTALL), lambda match: '')] + keep_only_tags = [dict(id='news_block')] #remove_tags_before=dict(name="h1", attrs={'class':'entry-title'}) #remove_tags_after=dict(name="footer", attrs={'class':'entry-footer clearfix'}) - #remove_tags=[dict(name='footer', attrs={'class':'entry-footer clearfix'}), dict(name='div', attrs={'class':'entry-comment-counter'})] - feeds = [(u'Najnowsze posty', u'http://www.tablety.pl/feed/')] + remove_tags=[dict(attrs={'class':['comments_icon', 'wp-polls', 'entry-comments']})] + feeds = [(u'Najnowsze posty', u'http://www.tablety.pl/feed/')] \ No newline at end of file diff --git a/recipes/the_sun.recipe b/recipes/the_sun.recipe index 3155bce3f2..10027d4583 100644 --- a/recipes/the_sun.recipe +++ b/recipes/the_sun.recipe @@ -20,7 +20,7 @@ class AdvancedUserRecipe1325006965(BasicNewsRecipe): no_stylesheets = True ignore_duplicate_articles = {'title','url'} - + compress_news_images = True 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;} diff --git a/recipes/theonion.recipe b/recipes/theonion.recipe index b0eacbb5e0..6cb19cee94 100644 --- a/recipes/theonion.recipe +++ b/recipes/theonion.recipe @@ -1,5 +1,5 @@ __license__ = 'GPL v3' -__copyright__ = '2009-2011, Darko Miletic ' +__copyright__ = '2009-2013, Darko Miletic ' ''' theonion.com @@ -10,7 +10,7 @@ from calibre.web.feeds.news import BasicNewsRecipe class TheOnion(BasicNewsRecipe): title = 'The Onion' __author__ = 'Darko Miletic' - description = "America's finest news source" + description = "The Onion, America's Finest News Source, is an award-winning publication covering world, national, and * local issues. It is updated daily online and distributed weekly in select American cities." oldest_article = 2 max_articles_per_feed = 100 publisher = 'Onion, Inc.' @@ -20,7 +20,8 @@ class TheOnion(BasicNewsRecipe): use_embedded_content = False encoding = 'utf-8' publication_type = 'newsportal' - masthead_url = 'http://o.onionstatic.com/img/headers/onion_190.png' + needs_subscription = 'optional' + masthead_url = 'http://www.theonion.com/static/onion/img/logo_1x.png' extra_css = """ body{font-family: Helvetica,Arial,sans-serif} .section_title{color: gray; text-transform: uppercase} @@ -37,18 +38,12 @@ class TheOnion(BasicNewsRecipe): , 'language' : language } - keep_only_tags = [ - dict(name='h2', attrs={'class':['section_title','title']}) - ,dict(attrs={'class':['main_image','meta','article_photo_lead','article_body']}) - ,dict(attrs={'id':['entries']}) - ] - remove_attributes=['lang','rel'] - remove_tags_after = dict(attrs={'class':['article_body','feature_content']}) - remove_tags = [ - dict(name=['object','link','iframe','base','meta']) - ,dict(name='div', attrs={'class':['toolbar_side','graphical_feature','toolbar_bottom']}) - ,dict(name='div', attrs={'id':['recent_slider','sidebar','pagination','related_media']}) - ] + keep_only_tags = [dict(attrs={'class':'full-article'})] + remove_attributes = ['lang','rel'] + remove_tags = [ + dict(name=['object','link','iframe','base','meta']) + ,dict(attrs={'class':lambda x: x and 'share-tools' in x.split()}) + ] feeds = [ @@ -56,6 +51,17 @@ class TheOnion(BasicNewsRecipe): ,(u'Sports' , u'http://feeds.theonion.com/theonion/sports' ) ] + def get_browser(self): + br = BasicNewsRecipe.get_browser(self) + br.open('http://www.theonion.com/') + if self.username is not None and self.password is not None: + br.open('https://ui.ppjol.com/login/onion/u/j_spring_security_check') + br.select_form(name='f') + br['j_username'] = self.username + br['j_password'] = self.password + br.submit() + return br + def get_article_url(self, article): artl = BasicNewsRecipe.get_article_url(self, article) if artl.startswith('http://www.theonion.com/audio/'): @@ -79,4 +85,8 @@ class TheOnion(BasicNewsRecipe): else: str = self.tag_to_string(item) item.replaceWith(str) + for item in soup.findAll('img'): + if item.has_key('data-src'): + item['src'] = item['data-src'] return soup + diff --git a/recipes/tomshardware.recipe b/recipes/tomshardware.recipe index c75b19189d..e0f21ae2a4 100644 --- a/recipes/tomshardware.recipe +++ b/recipes/tomshardware.recipe @@ -1,7 +1,5 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' -__copyright__ = '2008-2009, Darko Miletic ' +__copyright__ = '2008-2013, Darko Miletic ' ''' tomshardware.com/us ''' @@ -16,22 +14,20 @@ class Tomshardware(BasicNewsRecipe): publisher = "Tom's Hardware" category = 'news, IT, hardware, USA' no_stylesheets = True - needs_subscription = True - language = 'en' - + needs_subscription = 'optional' + language = 'en' INDEX = 'http://www.tomshardware.com' LOGIN = INDEX + '/membres/' remove_javascript = True use_embedded_content= False - html2lrf_options = [ - '--comment', description - , '--category', category - , '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"' - + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + def get_browser(self): br = BasicNewsRecipe.get_browser(self) br.open(self.INDEX+'/us/') @@ -50,8 +46,8 @@ class Tomshardware(BasicNewsRecipe): ] feeds = [ - (u'Latest Articles', u'http://www.tomshardware.com/feeds/atom/tom-s-hardware-us,18-2.xml' ) - ,(u'Latest News' , u'http://www.tomshardware.com/feeds/atom/tom-s-hardware-us,18-1.xml') + (u'Reviews', u'http://www.tomshardware.com/feeds/rss2/tom-s-hardware-us,18-2.xml') + ,(u'News' , u'http://www.tomshardware.com/feeds/rss2/tom-s-hardware-us,18-1.xml') ] def print_version(self, url): diff --git a/recipes/universe_today.recipe b/recipes/universe_today.recipe new file mode 100644 index 0000000000..65aefc231f --- /dev/null +++ b/recipes/universe_today.recipe @@ -0,0 +1,17 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class UniverseToday(BasicNewsRecipe): + title = u'Universe Today' + language = 'en' + description = u'Space and astronomy news.' + __author__ = 'seird' + publisher = u'universetoday.com' + category = 'science, astronomy, news, rss' + oldest_article = 7 + max_articles_per_feed = 40 + auto_cleanup = True + no_stylesheets = True + use_embedded_content = False + remove_empty_feeds = True + + feeds = [(u'Universe Today', u'http://feeds.feedburner.com/universetoday/pYdq')] diff --git a/recipes/vic_times.recipe b/recipes/vic_times.recipe index 48fb9038aa..8aaa6d05b3 100644 --- a/recipes/vic_times.recipe +++ b/recipes/vic_times.recipe @@ -6,17 +6,62 @@ __license__ = 'GPL v3' www.canada.com ''' import re -from calibre.web.feeds.recipes import BasicNewsRecipe +from calibre.web.feeds.news import BasicNewsRecipe + from calibre.ebooks.BeautifulSoup import Tag, BeautifulStoneSoup class TimesColonist(BasicNewsRecipe): + # Customization -- remove sections you don't want. + # If your e-reader is an e-ink Kindle and your output profile is + # set properly this recipe will not include images because the + # resulting file is too large. If you have one of these and want + # images you can set kindle_omit_images = False + # and remove sections (typically the e-ink Kindles will + # work with about a dozen of these, but your mileage may vary). + + kindle_omit_images = True + + section_list = [ + ('','Web Front Page'), + ('news/','News Headlines'), + ('news/b-c/','BC News'), + ('news/national/','National News'), + ('news/world/','World News'), + ('opinion/','Opinion'), + ('opinion/letters/','Letters'), + ('business/','Business'), + ('business/money/','Money'), + ('business/technology/','Technology'), + ('business/working/','Working'), + ('sports/','Sports'), + ('sports/hockey/','Hockey'), + ('sports/football/','Football'), + ('sports/basketball/','Basketball'), + ('sports/golf/','Golf'), + ('entertainment/','entertainment'), + ('entertainment/go/','Go!'), + ('entertainment/music/','Music'), + ('entertainment/books/','Books'), + ('entertainment/Movies/','Movies'), + ('entertainment/television/','Television'), + ('life/','Life'), + ('life/health/','Health'), + ('life/travel/','Travel'), + ('life/driving/','Driving'), + ('life/homes/','Homes'), + ('life/food-drink/','Food & Drink') + ] + title = u'Victoria Times Colonist' url_prefix = 'http://www.timescolonist.com' description = u'News from Victoria, BC' fp_tag = 'CAN_TC' + masthead_url = 'http://www.timescolonist.com/gmg/img/global/logoTimesColonist.png' + + url_list = [] language = 'en_CA' __author__ = 'Nick Redding' @@ -29,15 +74,21 @@ class TimesColonist(BasicNewsRecipe): .caption { font-size: xx-small; font-style: italic; font-weight: normal; } ''' keep_only_tags = [dict(name='div', attrs={'class':re.compile('main.content')})] - remove_tags = [{'class':'comments'}, - {'id':'photocredit'}, - dict(name='div', attrs={'class':re.compile('top.controls')}), - dict(name='div', attrs={'class':re.compile('social')}), - dict(name='div', attrs={'class':re.compile('tools')}), - dict(name='div', attrs={'class':re.compile('bottom.tools')}), - dict(name='div', attrs={'class':re.compile('window')}), - dict(name='div', attrs={'class':re.compile('related.news.element')})] + def __init__(self, options, log, progress_reporter): + self.remove_tags = [{'class':'comments'}, + {'id':'photocredit'}, + dict(name='div', attrs={'class':re.compile('top.controls')}), + dict(name='div', attrs={'class':re.compile('^comments')}), + dict(name='div', attrs={'class':re.compile('social')}), + dict(name='div', attrs={'class':re.compile('tools')}), + dict(name='div', attrs={'class':re.compile('bottom.tools')}), + dict(name='div', attrs={'class':re.compile('window')}), + dict(name='div', attrs={'class':re.compile('related.news.element')})] + print("PROFILE NAME = "+options.output_profile.short_name) + if self.kindle_omit_images and options.output_profile.short_name in ['kindle', 'kindle_dx', 'kindle_pw']: + self.remove_tags.append(dict(name='div', attrs={'class':re.compile('image-container')})) + BasicNewsRecipe.__init__(self, options, log, progress_reporter) def get_cover_url(self): from datetime import timedelta, date @@ -122,7 +173,6 @@ class TimesColonist(BasicNewsRecipe): def preprocess_html(self,soup): byline = soup.find('p',attrs={'class':re.compile('ancillary')}) if byline is not None: - byline.find('a') authstr = self.tag_to_string(byline,False) authstr = re.sub('/ *Times Colonist','/',authstr, flags=re.IGNORECASE) authstr = re.sub('BY */','',authstr, flags=re.IGNORECASE) @@ -149,9 +199,10 @@ class TimesColonist(BasicNewsRecipe): atag = htag.a if atag is not None: url = atag['href'] - #print("Checking "+url) - if atag['href'].startswith('/'): - url = self.url_prefix+atag['href'] + url = url.strip() + # print("Checking >>"+url+'<<\n\r') + if url.startswith('/'): + url = self.url_prefix+url if url in self.url_list: return self.url_list.append(url) @@ -171,10 +222,10 @@ class TimesColonist(BasicNewsRecipe): if dtag is not None: description = self.tag_to_string(dtag,False) article_list.append(dict(title=title,url=url,date='',description=description,author='',content='')) - #print(sectitle+title+": description = "+description+" URL="+url) + print(sectitle+title+": description = "+description+" URL="+url+'\n\r') def add_section_index(self,ans,securl,sectitle): - print("Add section url="+self.url_prefix+'/'+securl) + print("Add section url="+self.url_prefix+'/'+securl+'\n\r') try: soup = self.index_to_soup(self.url_prefix+'/'+securl) except: @@ -193,33 +244,7 @@ class TimesColonist(BasicNewsRecipe): def parse_index(self): ans = [] - ans = self.add_section_index(ans,'','Web Front Page') - ans = self.add_section_index(ans,'news/','News Headlines') - ans = self.add_section_index(ans,'news/b-c/','BC News') - ans = self.add_section_index(ans,'news/national/','Natioanl News') - ans = self.add_section_index(ans,'news/world/','World News') - ans = self.add_section_index(ans,'opinion/','Opinion') - ans = self.add_section_index(ans,'opinion/letters/','Letters') - ans = self.add_section_index(ans,'business/','Business') - ans = self.add_section_index(ans,'business/money/','Money') - ans = self.add_section_index(ans,'business/technology/','Technology') - ans = self.add_section_index(ans,'business/working/','Working') - ans = self.add_section_index(ans,'sports/','Sports') - ans = self.add_section_index(ans,'sports/hockey/','Hockey') - ans = self.add_section_index(ans,'sports/football/','Football') - ans = self.add_section_index(ans,'sports/basketball/','Basketball') - ans = self.add_section_index(ans,'sports/golf/','Golf') - ans = self.add_section_index(ans,'entertainment/','entertainment') - ans = self.add_section_index(ans,'entertainment/go/','Go!') - ans = self.add_section_index(ans,'entertainment/music/','Music') - ans = self.add_section_index(ans,'entertainment/books/','Books') - ans = self.add_section_index(ans,'entertainment/Movies/','movies') - ans = self.add_section_index(ans,'entertainment/television/','Television') - ans = self.add_section_index(ans,'life/','Life') - ans = self.add_section_index(ans,'life/health/','Health') - ans = self.add_section_index(ans,'life/travel/','Travel') - ans = self.add_section_index(ans,'life/driving/','Driving') - ans = self.add_section_index(ans,'life/homes/','Homes') - ans = self.add_section_index(ans,'life/food-drink/','Food & Drink') + for (url,title) in self.section_list: + ans = self.add_section_index(ans,url,title) return ans diff --git a/recipes/wirtualnemedia_pl.recipe b/recipes/wirtualnemedia_pl.recipe index 155cafbec2..ed3b3787f8 100644 --- a/recipes/wirtualnemedia_pl.recipe +++ b/recipes/wirtualnemedia_pl.recipe @@ -1,21 +1,22 @@ from calibre.web.feeds.news import BasicNewsRecipe class WirtualneMedia(BasicNewsRecipe): - title = u'wirtualnemedia.pl' + title = u'Wirtualnemedia.pl' oldest_article = 7 max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False remove_empty_feeds = True - __author__ = 'fenuks' + __author__ = 'fenuks' extra_css = '.thumbnail {float:left; max-width:150px; margin-right:5px;}' - description = u'Portal o mediach, reklamie, internecie, PR, telekomunikacji - nr 1 w Polsce - WirtualneMedia.pl - wiadomości z pierwszej ręki.' - category = 'internet' - language = 'pl' + description = u'Portal o mediach, reklamie, internecie, PR, telekomunikacji - nr 1 w Polsce - WirtualneMedia.pl - wiadomości z pierwszej ręki.' + category = 'internet' + language = 'pl' + ignore_duplicate_articles = {'title', 'url'} masthead_url= 'http://i.wp.pl/a/f/jpeg/8654/wirtualnemedia.jpeg' cover_url= 'http://static.wirtualnemedia.pl/img/logo_wirtualnemedia_newsletter.gif' remove_tags=[dict(id=['header', 'footer'])] - feeds = [(u'Gospodarka', u'http://www.wirtualnemedia.pl/rss/wm_gospodarka.xml'), + feeds = [(u'Gospodarka', u'http://www.wirtualnemedia.pl/rss/wm_gospodarka.xml'), (u'Internet', u'http://www.wirtualnemedia.pl/rss/wm_internet.xml'), (u'Kultura', u'http://www.wirtualnemedia.pl/rss/wm_kulturarozrywka.xml'), (u'Badania', u'http://www.wirtualnemedia.pl/rss/wm_marketing.xml'), @@ -24,8 +25,6 @@ class WirtualneMedia(BasicNewsRecipe): (u'Reklama', u'http://www.wirtualnemedia.pl/rss/wm_reklama.xml'), (u'PR', u'http://www.wirtualnemedia.pl/rss/wm_relations.xml'), (u'Technologie', u'http://www.wirtualnemedia.pl/rss/wm_telekomunikacja.xml'), - (u'Telewizja', u'http://www.wirtualnemedia.pl/rss/wm_telewizja_rss.xml') - ] - + (u'Telewizja', u'http://www.wirtualnemedia.pl/rss/wm_telewizja_rss.xml')] def print_version(self, url): return url.replace('artykul', 'print') diff --git a/recipes/wolne_media.recipe b/recipes/wolne_media.recipe new file mode 100644 index 0000000000..5f8c87a607 --- /dev/null +++ b/recipes/wolne_media.recipe @@ -0,0 +1,26 @@ +#!/usr/bin/env python + +__license__ = 'GPL v3' +__author__ = 'teepel ' + +''' +wolnemedia.net +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class wolne_media(BasicNewsRecipe): + title = u'Wolne Media' + __author__ = 'teepel ' + language = 'pl' + description ='Wiadomości z wolnemedia.net' + INDEX='http://wolnemedia.net' + oldest_article = 1 + max_articles_per_feed = 100 + remove_empty_feeds= True + simultaneous_downloads = 5 + remove_javascript=True + no_stylesheets=True + auto_cleanup = True + + feeds = [(u'Wiadomości z kraju', u'http://wolnemedia.net/category/wiadomosci-z-kraju/feed/'),(u'Wiadomości ze świata', u'http://wolnemedia.net/category/wiadomosci-ze-swiata/feed/'),(u'Edukacja', u'http://wolnemedia.net/category/edukacja/feed/'),(u'Ekologia', u'http://wolnemedia.net/category/ekologia/feed/'),(u'Gospodarka', u'http://wolnemedia.net/category/gospodarka/feed/'),(u'Historia', u'http://wolnemedia.net/category/historia/feed/'),(u'Kultura', u'http://wolnemedia.net/category/kultura/feed/'),(u'Kulturoznawstwo', u'http://wolnemedia.net/category/kulturoznawstwo/feed/'),(u'Media', u'http://wolnemedia.net/category/media/feed/'),(u'Nauka', u'http://wolnemedia.net/category/nauka/feed/'),(u'Opowiadania', u'http://wolnemedia.net/category/opowiadania/feed/'),(u'Paranauka i ezoteryka', u'http://wolnemedia.net/category/ezoteryka/feed/'),(u'Polityka', u'http://wolnemedia.net/category/polityka/feed/'),(u'Prawo', u'http://wolnemedia.net/category/prawo/feed/'),(u'Publicystyka', u'http://wolnemedia.net/category/publicystyka/feed/'),(u'Reportaż', u'http://wolnemedia.net/category/reportaz/feed/'),(u'Seks', u'http://wolnemedia.net/category/seks/feed/'),(u'Społeczeństwo', u'http://wolnemedia.net/category/spoleczenstwo/feed/'),(u'Świat komputerów', u'http://wolnemedia.net/category/swiat-komputerow/feed/'),(u'Wierzenia', u'http://wolnemedia.net/category/wierzenia/feed/'),(u'Zdrowie', u'http://wolnemedia.net/category/zdrowie/feed/')] diff --git a/recipes/wprost.recipe b/recipes/wprost.recipe index 90dde251ca..d923f64a3f 100644 --- a/recipes/wprost.recipe +++ b/recipes/wprost.recipe @@ -1,10 +1,9 @@ #!/usr/bin/env python __license__ = 'GPL v3' -__copyright__ = '2010, matek09, matek09@gmail.com' -__copyright__ = 'Modified 2011, Mariusz Wolek ' -__copyright__ = 'Modified 2012, Artur Stachecki ' - +__copyright__ = '''2010, matek09, matek09@gmail.com + Modified 2011, Mariusz Wolek + Modified 2012, Artur Stachecki ''' from calibre.web.feeds.news import BasicNewsRecipe import re @@ -16,12 +15,12 @@ class Wprost(BasicNewsRecipe): ICO_BLOCKED = 'http://www.wprost.pl/G/layout2/ico_blocked.png' title = u'Wprost' __author__ = 'matek09' - description = 'Weekly magazine' + description = u'Popularny tygodnik ogólnopolski - Wprost. Najlepszy wśród polskich tygodników - opiniotwórczy - społeczno-informacyjny - społeczno-kulturalny.' encoding = 'ISO-8859-2' no_stylesheets = True language = 'pl' remove_javascript = True - recursions = 0 + recursions = 0 remove_tags_before = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) remove_tags_after = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) ''' @@ -94,5 +93,3 @@ class Wprost(BasicNewsRecipe): 'description' : '' }) return articles - - diff --git a/recipes/wprost_rss.recipe b/recipes/wprost_rss.recipe index bffbacc474..59c130fc75 100644 --- a/recipes/wprost_rss.recipe +++ b/recipes/wprost_rss.recipe @@ -1,10 +1,9 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2010, matek09, matek09@gmail.com' -__copyright__ = 'Modified 2011, Mariusz Wolek ' -__copyright__ = 'Modified 2012, Artur Stachecki ' +#!/usr/bin/env python +__license__ = 'GPL v3' +__copyright__ = '''2010, matek09, matek09@gmail.com + Modified 2011, Mariusz Wolek + Modified 2012, Artur Stachecki ''' from calibre.web.feeds.news import BasicNewsRecipe import re @@ -12,13 +11,14 @@ import re class Wprost(BasicNewsRecipe): title = u'Wprost (RSS)' __author__ = 'matek09' - description = 'Weekly magazine' + description = u'Portal informacyjny. Najświeższe wiadomości, najciekawsze komentarze i opinie. Blogi najlepszych publicystów.' encoding = 'ISO-8859-2' no_stylesheets = True language = 'pl' remove_javascript = True recursions = 0 use_embedded_content = False + ignore_duplicate_articles = {'title', 'url'} remove_empty_feeds = True remove_tags_before = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) remove_tags_after = dict(dict(name = 'div', attrs = {'id' : 'print-layer'})) @@ -48,20 +48,20 @@ class Wprost(BasicNewsRecipe): #h2 {font-size: x-large; font-weight: bold} feeds = [(u'Tylko u nas', u'http://www.wprost.pl/rss/rss_wprostextra.php'), - (u'Wydarzenia', u'http://www.wprost.pl/rss/rss.php'), - (u'Komentarze', u'http://www.wprost.pl/rss/rss_komentarze.php'), - (u'Wydarzenia: Kraj', u'http://www.wprost.pl/rss/rss_kraj.php'), - (u'Komentarze: Kraj', u'http://www.wprost.pl/rss/rss_komentarze_kraj.php'), - (u'Wydarzenia: Świat', u'http://www.wprost.pl/rss/rss_swiat.php'), - (u'Komentarze: Świat', u'http://www.wprost.pl/rss/rss_komentarze_swiat.php'), - (u'Wydarzenia: Gospodarka', u'http://www.wprost.pl/rss/rss_gospodarka.php'), - (u'Komentarze: Gospodarka', u'http://www.wprost.pl/rss/rss_komentarze_gospodarka.php'), - (u'Wydarzenia: Życie', u'http://www.wprost.pl/rss/rss_zycie.php'), - (u'Komentarze: Życie', u'http://www.wprost.pl/rss/rss_komentarze_zycie.php'), - (u'Wydarzenia: Sport', u'http://www.wprost.pl/rss/rss_sport.php'), - (u'Komentarze: Sport', u'http://www.wprost.pl/rss/rss_komentarze_sport.php'), - (u'Przegląd prasy', u'http://www.wprost.pl/rss/rss_prasa.php') - ] + (u'Wydarzenia', u'http://www.wprost.pl/rss/rss.php'), + (u'Komentarze', u'http://www.wprost.pl/rss/rss_komentarze.php'), + (u'Wydarzenia: Kraj', u'http://www.wprost.pl/rss/rss_kraj.php'), + (u'Komentarze: Kraj', u'http://www.wprost.pl/rss/rss_komentarze_kraj.php'), + (u'Wydarzenia: Świat', u'http://www.wprost.pl/rss/rss_swiat.php'), + (u'Komentarze: Świat', u'http://www.wprost.pl/rss/rss_komentarze_swiat.php'), + (u'Wydarzenia: Gospodarka', u'http://www.wprost.pl/rss/rss_gospodarka.php'), + (u'Komentarze: Gospodarka', u'http://www.wprost.pl/rss/rss_komentarze_gospodarka.php'), + (u'Wydarzenia: Życie', u'http://www.wprost.pl/rss/rss_zycie.php'), + (u'Komentarze: Życie', u'http://www.wprost.pl/rss/rss_komentarze_zycie.php'), + (u'Wydarzenia: Sport', u'http://www.wprost.pl/rss/rss_sport.php'), + (u'Komentarze: Sport', u'http://www.wprost.pl/rss/rss_komentarze_sport.php'), + (u'Przegląd prasy', u'http://www.wprost.pl/rss/rss_prasa.php') + ] def get_cover_url(self): soup = self.index_to_soup('http://www.wprost.pl/tygodnik') diff --git a/recipes/wyborcza_duzy_format.recipe b/recipes/wyborcza_duzy_format.recipe deleted file mode 100644 index 30b0cfe418..0000000000 --- a/recipes/wyborcza_duzy_format.recipe +++ /dev/null @@ -1,144 +0,0 @@ -#!/usr/bin/env python - -from calibre.web.feeds.recipes import BasicNewsRecipe - -class GazetaWyborczaDuzyForma(BasicNewsRecipe): - cover_url = 'http://bi.gazeta.pl/im/8/5415/m5415058.gif' - title = u"Gazeta Wyborcza Duzy Format" - __author__ = 'ravcio - rlelusz[at]gmail.com' - description = u"Articles from Gazeta's website" - language = 'pl' - max_articles_per_feed = 50 #you can increade it event up to maybe 600, should still work - recursions = 0 - encoding = 'iso-8859-2' - no_stylesheets = True - remove_javascript = True - use_embedded_content = False - - - keep_only_tags = [ - dict(name='div', attrs={'id':['k1']}) - ] - - remove_tags = [ - dict(name='div', attrs={'class':['zdjM', 'rel_video', 'zdjP', 'rel_box', 'index mod_zi_dolStrony']}) - ,dict(name='div', attrs={'id':['source', 'banP4', 'article_toolbar', 'rel', 'inContext_disabled']}) - ,dict(name='ul', attrs={'id':['articleToolbar']}) - ,dict(name='img', attrs={'class':['brand']}) - ,dict(name='h5', attrs={'class':['author']}) - ,dict(name='h6', attrs={'class':['date']}) - ,dict(name='p', attrs={'class':['txt_upl']}) - ] - - remove_tags_after = [ - dict(name='div', attrs={'id':['Str']}) #nawigator numerow linii - ] - - def load_article_links(self, url, count): - print '--- load_article_links', url, count - - #page with link to articles - soup = self.index_to_soup(url) - - #table with articles - list = soup.find('div', attrs={'class':'GWdalt'}) - - #single articles (link, title, ...) - links = list.findAll('div', attrs={'class':['GWdaltE']}) - - if len(links) < count: - #load links to more articles... - - #remove new link - pages_nav = list.find('div', attrs={'class':'pages'}) - next = pages_nav.find('a', attrs={'class':'next'}) - if next: - print 'next=', next['href'] - url = 'http://wyborcza.pl' + next['href'] - #e.g. url = 'http://wyborcza.pl/0,75480.html?str=2' - - older_links = self.load_article_links(url, count - len(links)) - links.extend(older_links) - - return links - - - #produce list of articles to download - def parse_index(self): - print '--- parse_index' - - max_articles = 8000 - links = self.load_article_links('http://wyborcza.pl/0,75480.html', max_articles) - - ans = [] - key = None - articles = {} - - key = 'Uncategorized' - articles[key] = [] - - for div_art in links: - div_date = div_art.find('div', attrs={'class':'kL'}) - div = div_art.find('div', attrs={'class':'kR'}) - - a = div.find('a', href=True) - - url = a['href'] - title = a.string - description = '' - pubdate = div_date.string.rstrip().lstrip() - summary = div.find('span', attrs={'class':'lead'}) - - desc = summary.find('a', href=True) - if desc: - desc.extract() - - description = self.tag_to_string(summary, use_alt=False) - description = description.rstrip().lstrip() - - feed = key if key is not None else 'Duzy Format' - - if not articles.has_key(feed): - articles[feed] = [] - - if description != '': # skip just pictures atricle - articles[feed].append( - dict(title=title, url=url, date=pubdate, - description=description, - content='')) - - ans = [(key, articles[key])] - return ans - - def append_page(self, soup, appendtag, position): - pager = soup.find('div',attrs={'id':'Str'}) - if pager: - #seek for 'a' element with nast value (if not found exit) - list = pager.findAll('a') - - for elem in list: - if 'nast' in elem.string: - nexturl = elem['href'] - - soup2 = self.index_to_soup('http://warszawa.gazeta.pl' + nexturl) - - texttag = soup2.find('div', attrs={'id':'artykul'}) - - newpos = len(texttag.contents) - self.append_page(soup2,texttag,newpos) - texttag.extract() - appendtag.insert(position,texttag) - - def preprocess_html(self, soup): - self.append_page(soup, soup.body, 3) - - # finally remove some tags - pager = soup.find('div',attrs={'id':'Str'}) - if pager: - pager.extract() - - pager = soup.find('div',attrs={'class':'tylko_int'}) - if pager: - pager.extract() - - return soup diff --git a/recipes/wysokie_obcasy.recipe b/recipes/wysokie_obcasy.recipe new file mode 100644 index 0000000000..332bc6138d --- /dev/null +++ b/recipes/wysokie_obcasy.recipe @@ -0,0 +1,57 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' + +from calibre.web.feeds.news import BasicNewsRecipe + +class WysokieObcasyRecipe(BasicNewsRecipe): + __author__ = u'Artur Stachecki ' + language = 'pl' + version = 1 + + title = u'Wysokie Obcasy' + publisher = 'Agora SA' + description = u'Serwis sobotniego dodatku do Gazety Wyborczej' + category='magazine' + language = 'pl' + publication_type = 'magazine' + cover_url='' + remove_empty_feeds= True + no_stylesheets=True + oldest_article = 7 + max_articles_per_feed = 100000 + recursions = 0 + + no_stylesheets = True + remove_javascript = True + simultaneous_downloads = 5 + + keep_only_tags =[] + keep_only_tags.append(dict(name = 'div', attrs = {'id' : 'article'})) + + remove_tags =[] + remove_tags.append(dict(name = 'img')) + remove_tags.append(dict(name = 'p', attrs = {'class' : 'info'})) + + extra_css = ''' + body {font-family: verdana, arial, helvetica, geneva, sans-serif ;} + h1{text-align: left;} + ''' + + feeds = [ + ('Wszystkie Artykuly', 'feed://www.wysokieobcasy.pl/pub/rss/wysokieobcasy.xml'), + ] + + def print_version(self,url): + baseURL='http://www.wysokieobcasy.pl/wysokie-obcasy' + segments = url.split(',') + subPath= '/2029020,' + articleURL1 = segments[1] + articleURL2 = segments[2] + printVerString=articleURL1 + ',' + articleURL2 + s= baseURL + subPath + printVerString + '.html' + return s + + def get_cover_url(self): + soup = self.index_to_soup('http://www.wysokieobcasy.pl/wysokie-obcasy/0,0.html') + self.cover_url = soup.find(attrs={'class':'holder_cr'}).find('img')['src'] + return getattr(self, 'cover_url', self.cover_url) diff --git a/resources/compiled_coffeescript.zip b/resources/compiled_coffeescript.zip index 782a26a0c2..d5b7086600 100644 Binary files a/resources/compiled_coffeescript.zip and b/resources/compiled_coffeescript.zip differ diff --git a/resources/default_tweaks.py b/resources/default_tweaks.py index ff1a53de96..9851d76af4 100644 --- a/resources/default_tweaks.py +++ b/resources/default_tweaks.py @@ -79,7 +79,7 @@ author_name_copywords = ('Corporation', 'Company', 'Co.', 'Agency', 'Council', # By default, calibre splits a string containing multiple author names on # ampersands and the words "and" and "with". You can customize the splitting # by changing the regular expression below. Strings are split on whatever the -# specified regular expression matches. +# specified regular expression matches, in addition to ampersands. # Default: r'(?i),?\s+(and|with)\s+' authors_split_regex = r'(?i),?\s+(and|with)\s+' diff --git a/resources/templates/rtf.xsl b/resources/templates/rtf.xsl index 61474701dc..ee247296c6 100644 --- a/resources/templates/rtf.xsl +++ b/resources/templates/rtf.xsl @@ -357,7 +357,7 @@ - + @@ -390,7 +390,6 @@ - @@ -415,13 +414,11 @@ - - page-break-after:always - +
- +
@@ -445,7 +442,7 @@ - + @@ -472,9 +469,7 @@ - - - + diff --git a/session.vim b/session.vim index 5e127428cf..a67c5ed8e6 100644 --- a/session.vim +++ b/session.vim @@ -1,6 +1,3 @@ -" Project wide builtins -let $PYFLAKES_BUILTINS = "_,dynamic_property,__,P,I,lopen,icu_lower,icu_upper,icu_title,ngettext" - " Include directories for C++ modules let g:syntastic_cpp_include_dirs = [ \'/usr/include/python2.7', diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000000..5a0ae0e629 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,4 @@ +[flake8] +max-line-length = 160 +builtins = _,dynamic_property,__,P,I,lopen,icu_lower,icu_upper,icu_title,ngettext +ignore = E12,E22,E231,E301,E302,E304,E401,W391 diff --git a/setup/check.py b/setup/check.py index 0baec38a50..281527e51a 100644 --- a/setup/check.py +++ b/setup/check.py @@ -22,40 +22,12 @@ class Message: self.filename, self.lineno, self.msg = filename, lineno, msg def __str__(self): - return '%s:%s: %s'%(self.filename, self.lineno, self.msg) - -def check_for_python_errors(code_string, filename): - import _ast - # First, compile into an AST and handle syntax errors. - try: - tree = compile(code_string, filename, "exec", _ast.PyCF_ONLY_AST) - except (SyntaxError, IndentationError) as value: - msg = value.args[0] - - (lineno, offset, text) = value.lineno, value.offset, value.text - - # If there's an encoding problem with the file, the text is None. - if text is None: - # Avoid using msg, since for the only known case, it contains a - # bogus message that claims the encoding the file declared was - # unknown. - msg = "%s: problem decoding source" % filename - - return [Message(filename, lineno, msg)] - else: - checker = __import__('pyflakes.checker').checker - # Okay, it's syntactically valid. Now check it. - w = checker.Checker(tree, filename) - w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno)) - return [Message(x.filename, x.lineno, x.message%x.message_args) for x in - w.messages] + return '%s:%s: %s' % (self.filename, self.lineno, self.msg) class Check(Command): description = 'Check for errors in the calibre source code' - BUILTINS = ['_', '__', 'dynamic_property', 'I', 'P', 'lopen', 'icu_lower', - 'icu_upper', 'icu_title', 'ngettext'] CACHE = '.check-cache.pickle' def get_files(self, cache): @@ -65,10 +37,10 @@ class Check(Command): mtime = os.stat(y).st_mtime if cache.get(y, 0) == mtime: continue - if (f.endswith('.py') and f not in ('feedparser.py', - 'pyparsing.py', 'markdown.py') and - 'prs500/driver.py' not in y): - yield y, mtime + if (f.endswith('.py') and f not in ( + 'feedparser.py', 'pyparsing.py', 'markdown.py') and + 'prs500/driver.py' not in y): + yield y, mtime if f.endswith('.coffee'): yield y, mtime @@ -79,25 +51,22 @@ class Check(Command): if f.endswith('.recipe') and cache.get(f, 0) != mtime: yield f, mtime - def run(self, opts): cache = {} if os.path.exists(self.CACHE): cache = cPickle.load(open(self.CACHE, 'rb')) - builtins = list(set_builtins(self.BUILTINS)) for f, mtime in self.get_files(cache): self.info('\tChecking', f) errors = False ext = os.path.splitext(f)[1] if ext in {'.py', '.recipe'}: - w = check_for_python_errors(open(f, 'rb').read(), f) - if w: + p = subprocess.Popen(['flake8', '--ignore=E,W', f]) + if p.wait() != 0: errors = True - self.report_errors(w) else: from calibre.utils.serve_coffee import check_coffeescript try: - check_coffeescript(f) + check_coffeescript(f) except: errors = True if errors: @@ -106,8 +75,6 @@ class Check(Command): self.j(self.SRC, '../session.vim'), '-f', f]) raise SystemExit(1) cache[f] = mtime - for x in builtins: - delattr(__builtin__, x) cPickle.dump(cache, open(self.CACHE, 'wb'), -1) wn_path = os.path.expanduser('~/work/servers/src/calibre_servers/main') if os.path.exists(wn_path): diff --git a/setup/installer/linux/freeze2.py b/setup/installer/linux/freeze2.py index cbf0363fc9..44b8e81bff 100644 --- a/setup/installer/linux/freeze2.py +++ b/setup/installer/linux/freeze2.py @@ -47,6 +47,10 @@ binary_includes = [ '/usr/lib/libgthread-2.0.so.0', '/usr/lib/libpng14.so.14', '/usr/lib/libexslt.so.0', + # Ensure that libimobiledevice is compiled against openssl, not gnutls + '/usr/lib/libimobiledevice.so.3', + '/usr/lib/libusbmuxd.so.2', + '/usr/lib/libplist.so.1', MAGICK_PREFIX+'/lib/libMagickWand.so.5', MAGICK_PREFIX+'/lib/libMagickCore.so.5', '/usr/lib/libgcrypt.so.11', diff --git a/setup/installer/osx/app/main.py b/setup/installer/osx/app/main.py index 345b75f56f..2182038088 100644 --- a/setup/installer/osx/app/main.py +++ b/setup/installer/osx/app/main.py @@ -399,7 +399,8 @@ class Py2App(object): @flush def add_fontconfig(self): info('\nAdding fontconfig') - for x in ('fontconfig.1', 'freetype.6', 'expat.1'): + for x in ('fontconfig.1', 'freetype.6', 'expat.1', + 'plist.1', 'usbmuxd.2', 'imobiledevice.3'): src = os.path.join(SW, 'lib', 'lib'+x+'.dylib') self.install_dylib(src) dst = os.path.join(self.resources_dir, 'fonts') diff --git a/setup/iso_639/ca.po b/setup/iso_639/ca.po index 12251dc7fe..4bd9694de1 100644 --- a/setup/iso_639/ca.po +++ b/setup/iso_639/ca.po @@ -12,14 +12,14 @@ msgstr "" "Report-Msgid-Bugs-To: Debian iso-codes team \n" "POT-Creation-Date: 2011-11-25 14:01+0000\n" -"PO-Revision-Date: 2013-03-19 18:57+0000\n" +"PO-Revision-Date: 2013-03-28 13:01+0000\n" "Last-Translator: Ferran Rius \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-20 04:42+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-29 04:36+0000\n" +"X-Generator: Launchpad (build 16546)\n" "Language: ca\n" #. name for aaa @@ -1188,7 +1188,7 @@ msgstr "Andra-Hus" #. name for any msgid "Anyin" -msgstr "Anyin" +msgstr "Anyi" #. name for anz msgid "Anem" @@ -1884,7 +1884,7 @@ msgstr "Awera" #. name for aws msgid "Awyu; South" -msgstr "Awyu meridional" +msgstr "Awyu; meridional" #. name for awt msgid "Araweté" @@ -1892,7 +1892,7 @@ msgstr "Araweté" #. name for awu msgid "Awyu; Central" -msgstr "Awyu central" +msgstr "Awyu; Central" #. name for awv msgid "Awyu; Jair" @@ -2200,7 +2200,7 @@ msgstr "Bobo madaré septentrional" #. name for bbp msgid "Banda; West Central" -msgstr "Banda centre-occidental" +msgstr "Banda; Occidental" #. name for bbq msgid "Bamali" @@ -2548,7 +2548,7 @@ msgstr "Bena (Tanzània)" #. name for bfa msgid "Bari" -msgstr "Bari" +msgstr "Bari (Sudan)" #. name for bfb msgid "Bareli; Pauri" @@ -2592,7 +2592,7 @@ msgstr "Llenguatge de signes Ban Khor" #. name for bfl msgid "Banda-Ndélé" -msgstr "Banda-Ndélé" +msgstr "Banda; Ndele" #. name for bfm msgid "Mmen" @@ -2808,7 +2808,7 @@ msgstr "Bima" #. name for bhq msgid "Tukang Besi South" -msgstr "Tukang Besi meridional" +msgstr "Tukangbesi; meridional" #. name for bhr msgid "Malagasy; Bara" @@ -3000,7 +3000,7 @@ msgstr "Banjar" #. name for bjo msgid "Banda; Mid-Southern" -msgstr "Banda centre-meridional" +msgstr "Banda; Meridional" #. name for bjr msgid "Binumarien" @@ -3444,7 +3444,7 @@ msgstr "Aweer" #. name for bod msgid "Tibetan" -msgstr "tibetà" +msgstr "Tibetà; Central" #. name for boe msgid "Mundabli" @@ -3544,7 +3544,7 @@ msgstr "Barbacoas" #. name for bpd msgid "Banda-Banda" -msgstr "Banda-Banda" +msgstr "Banda; Banda" #. name for bpg msgid "Bonggo" @@ -3588,7 +3588,7 @@ msgstr "Kaure" #. name for bpq msgid "Malay; Banda" -msgstr "Malai, Banda" +msgstr "Malai; Banda" #. name for bpr msgid "Blaan; Koronadal" @@ -3664,7 +3664,7 @@ msgstr "Bandial" #. name for bqk msgid "Banda-Mbrès" -msgstr "Banda-Mbrès" +msgstr "Banda; Mbrès" #. name for bql msgid "Bilakura" @@ -4052,7 +4052,7 @@ msgstr "Buginès" #. name for buh msgid "Bunu; Younuo" -msgstr "Bunu; Younuo" +msgstr "Bunu; Younou" #. name for bui msgid "Bongili" @@ -4308,7 +4308,7 @@ msgstr "Bwa" #. name for bwx msgid "Bunu; Bu-Nao" -msgstr "Bunu; Bu-Nao" +msgstr "Bunu; Bu Nao" #. name for bwy msgid "Bwamu; Cwi" @@ -10520,7 +10520,7 @@ msgstr "Mesaka" #. name for iyx msgid "Yaka (Congo)" -msgstr "Yaka (Congo)" +msgstr "Teke; Yaa" #. name for izh msgid "Ingrian" @@ -10684,7 +10684,7 @@ msgstr "Jeh" #. name for jei msgid "Yei" -msgstr "" +msgstr "Yei" #. name for jek msgid "Jeri Kuo" @@ -10692,11 +10692,11 @@ msgstr "Jeri" #. name for jel msgid "Yelmek" -msgstr "" +msgstr "Yelmek" #. name for jen msgid "Dza" -msgstr "" +msgstr "Dza" #. name for jer msgid "Jere" @@ -10704,7 +10704,7 @@ msgstr "Jere" #. name for jet msgid "Manem" -msgstr "" +msgstr "Manem" #. name for jeu msgid "Jonkor Bourmataguil" @@ -10712,7 +10712,7 @@ msgstr "Jonkor" #. name for jgb msgid "Ngbee" -msgstr "" +msgstr "Ngbee" #. name for jge msgid "Judeo-Georgian" @@ -10720,7 +10720,7 @@ msgstr "Judeogeorgià" #. name for jgo msgid "Ngomba" -msgstr "" +msgstr "Ngomba" #. name for jhi msgid "Jehai" @@ -10740,11 +10740,11 @@ msgstr "Jibu" #. name for jic msgid "Tol" -msgstr "" +msgstr "Tol" #. name for jid msgid "Bu" -msgstr "" +msgstr "Bu (Nigèria)" #. name for jie msgid "Jilbe" @@ -10752,11 +10752,11 @@ msgstr "Jilbe" #. name for jig msgid "Djingili" -msgstr "" +msgstr "Djingili" #. name for jih msgid "Shangzhai" -msgstr "" +msgstr "Shangzhai" #. name for jii msgid "Jiiddu" @@ -10776,7 +10776,7 @@ msgstr "Jiamao" #. name for jiq msgid "Guanyinqiao" -msgstr "" +msgstr "Guanyinqiao" #. name for jit msgid "Jita" @@ -10788,7 +10788,7 @@ msgstr "Jinuo; Youle" #. name for jiv msgid "Shuar" -msgstr "" +msgstr "Shuar" #. name for jiy msgid "Jinuo; Buyuan" @@ -10800,11 +10800,11 @@ msgstr "Kubo" #. name for jku msgid "Labir" -msgstr "" +msgstr "Labir" #. name for jle msgid "Ngile" -msgstr "" +msgstr "Ngile" #. name for jls msgid "Jamaican Sign Language" @@ -10812,19 +10812,19 @@ msgstr "Llenguatge de signes jamaicà" #. name for jma msgid "Dima" -msgstr "" +msgstr "Jimajima" #. name for jmb msgid "Zumbun" -msgstr "" +msgstr "Zumbun" #. name for jmc msgid "Machame" -msgstr "" +msgstr "Machambe" #. name for jmd msgid "Yamdena" -msgstr "" +msgstr "Yamdena" #. name for jmi msgid "Jimi (Nigeria)" @@ -10860,7 +10860,7 @@ msgstr "Jandavra" #. name for jng msgid "Yangman" -msgstr "" +msgstr "Yangman" #. name for jni msgid "Janji" @@ -10868,11 +10868,11 @@ msgstr "Janji" #. name for jnj msgid "Yemsa" -msgstr "" +msgstr "Yemsa" #. name for jnl msgid "Rawat" -msgstr "" +msgstr "Rawat" #. name for jns msgid "Jaunsari" @@ -10884,7 +10884,7 @@ msgstr "Joba" #. name for jod msgid "Wojenaka" -msgstr "" +msgstr "Jula; Odienne" #. name for jor msgid "Jorá" @@ -10944,7 +10944,7 @@ msgstr "Juma" #. name for jub msgid "Wannu" -msgstr "" +msgstr "Wannu" #. name for juc msgid "Jurchen" @@ -10952,7 +10952,7 @@ msgstr "Jurchen" #. name for jud msgid "Worodougou" -msgstr "" +msgstr "Jula; Worodougou" #. name for juh msgid "Hõne" @@ -10960,7 +10960,7 @@ msgstr "" #. name for juk msgid "Wapan" -msgstr "" +msgstr "Wapan" #. name for jul msgid "Jirel" @@ -10980,7 +10980,7 @@ msgstr "Kona" #. name for jup msgid "Hupdë" -msgstr "" +msgstr "Hupda" #. name for jur msgid "Jurúna" @@ -11000,7 +11000,7 @@ msgstr "Ju" #. name for juw msgid "Wãpha" -msgstr "" +msgstr "Wãpha" #. name for juy msgid "Juray" @@ -11068,7 +11068,7 @@ msgstr "Karekare" #. name for kaj msgid "Jju" -msgstr "" +msgstr "Jju" #. name for kak msgid "Kallahan; Kayapa" @@ -11088,15 +11088,15 @@ msgstr "kannada" #. name for kao msgid "Xaasongaxango" -msgstr "" +msgstr "Xasonga" #. name for kap msgid "Bezhta" -msgstr "" +msgstr "Bezhta" #. name for kaq msgid "Capanahua" -msgstr "" +msgstr "Capanahua" #. name for kas msgid "Kashmiri" @@ -11104,7 +11104,7 @@ msgstr "caixmiri" #. name for kat msgid "Georgian" -msgstr "georgià" +msgstr "Georgià" #. name for kau msgid "Kanuri" @@ -11160,7 +11160,7 @@ msgstr "Khamba" #. name for kbh msgid "Camsá" -msgstr "" +msgstr "Camsa" #. name for kbi msgid "Kaptiau" @@ -11180,7 +11180,7 @@ msgstr "Kanembu" #. name for kbm msgid "Iwal" -msgstr "" +msgstr "Iwal" #. name for kbn msgid "Kare (Central African Republic)" @@ -11208,7 +11208,7 @@ msgstr "Kande" #. name for kbt msgid "Abadi" -msgstr "" +msgstr "Kabadi" #. name for kbu msgid "Kabutra" @@ -11216,7 +11216,7 @@ msgstr "Kabutra" #. name for kbv msgid "Dera (Indonesia)" -msgstr "" +msgstr "Kamberataro" #. name for kbw msgid "Kaiep" @@ -11232,7 +11232,7 @@ msgstr "Kanuri; Manga" #. name for kbz msgid "Duhwa" -msgstr "" +msgstr "Duhwa" #. name for kca msgid "Khanty" @@ -11244,7 +11244,7 @@ msgstr "Kawacha" #. name for kcc msgid "Lubila" -msgstr "" +msgstr "Lubila" #. name for kcd msgid "Kanum; Ngkâlmpw" @@ -11256,15 +11256,15 @@ msgstr "Kaivi" #. name for kcf msgid "Ukaan" -msgstr "" +msgstr "Ukaan" #. name for kcg msgid "Tyap" -msgstr "" +msgstr "Tyap" #. name for kch msgid "Vono" -msgstr "" +msgstr "Vono" #. name for kci msgid "Kamantan" @@ -11284,11 +11284,11 @@ msgstr "Kela (Papua Nova Guinea)" #. name for kcm msgid "Gula (Central African Republic)" -msgstr "" +msgstr "Gula (República Centreafricana)" #. name for kcn msgid "Nubi" -msgstr "" +msgstr "Nubi (Uganda)" #. name for kco msgid "Kinalakna" @@ -11340,7 +11340,7 @@ msgstr "Konongo" #. name for kda msgid "Worimi" -msgstr "" +msgstr "Worimi" #. name for kdc msgid "Kutu" @@ -11348,23 +11348,23 @@ msgstr "Kutu" #. name for kdd msgid "Yankunytjatjara" -msgstr "" +msgstr "Yankunytjatjara" #. name for kde msgid "Makonde" -msgstr "" +msgstr "Makonde" #. name for kdf msgid "Mamusi" -msgstr "" +msgstr "Mamusi" #. name for kdg msgid "Seba" -msgstr "" +msgstr "Seba" #. name for kdh msgid "Tem" -msgstr "" +msgstr "Tem" #. name for kdi msgid "Kumam" @@ -11376,11 +11376,11 @@ msgstr "Karamojong" #. name for kdk msgid "Numee" -msgstr "" +msgstr "Numee" #. name for kdl msgid "Tsikimba" -msgstr "" +msgstr "Tsikimba" #. name for kdm msgid "Kagoma" @@ -11456,7 +11456,7 @@ msgstr "Kpessi" #. name for keg msgid "Tese" -msgstr "" +msgstr "Tese" #. name for keh msgid "Keak" @@ -11512,7 +11512,7 @@ msgstr "Ket" #. name for keu msgid "Akebu" -msgstr "" +msgstr "Akebou" #. name for kev msgid "Kanikkaran" @@ -11608,7 +11608,7 @@ msgstr "Kachchi" #. name for kfs msgid "Bilaspuri" -msgstr "" +msgstr "Bilaspuri" #. name for kft msgid "Kanjari" @@ -11628,7 +11628,7 @@ msgstr "Naga; Kharam" #. name for kfx msgid "Pahari; Kullu" -msgstr "" +msgstr "Pahari; Kullu" #. name for kfy msgid "Kumaoni" @@ -11708,7 +11708,7 @@ msgstr "Kamoro" #. name for kgr msgid "Abun" -msgstr "" +msgstr "Abun" #. name for kgs msgid "Kumbainggar" @@ -11716,7 +11716,7 @@ msgstr "Kumbainggar" #. name for kgt msgid "Somyev" -msgstr "" +msgstr "Somyev" #. name for kgu msgid "Kobol" @@ -11744,11 +11744,11 @@ msgstr "Khasi" #. name for khb msgid "Lü" -msgstr "" +msgstr "Lu" #. name for khc msgid "Tukang Besi North" -msgstr "" +msgstr "Tukangbesi; Septentrional" #. name for khd msgid "Kanum; Bädi" @@ -11764,7 +11764,7 @@ msgstr "Khuen" #. name for khg msgid "Tibetan; Khams" -msgstr "" +msgstr "Tibetà; Khams" #. name for khh msgid "Kehu" @@ -11780,7 +11780,7 @@ msgstr "Mongol; Halh" #. name for khl msgid "Lusi" -msgstr "" +msgstr "Lusi" #. name for khm msgid "Khmer; Central" @@ -11816,7 +11816,7 @@ msgstr "Khamti" #. name for khu msgid "Nkhumbi" -msgstr "" +msgstr "Nkhumbi" #. name for khv msgid "Khvarshi" @@ -11916,7 +11916,7 @@ msgstr "Kis" #. name for kit msgid "Agob" -msgstr "" +msgstr "Agob" #. name for kiu msgid "Kirmanjki (individual language)" @@ -11944,11 +11944,11 @@ msgstr "Kisi" #. name for kja msgid "Mlap" -msgstr "" +msgstr "Mlap" #. name for kjb msgid "Q'anjob'al" -msgstr "" +msgstr "Kanjobal; Oriental" #. name for kjc msgid "Konjo; Coastal" @@ -11976,7 +11976,7 @@ msgstr "Khakas" #. name for kji msgid "Zabana" -msgstr "" +msgstr "Zabana" #. name for kjj msgid "Khinalugh" @@ -12028,15 +12028,15 @@ msgstr "Kashaya" #. name for kjx msgid "Ramopa" -msgstr "" +msgstr "Kereaka" #. name for kjy msgid "Erave" -msgstr "" +msgstr "Erave" #. name for kjz msgid "Bumthangkha" -msgstr "" +msgstr "Bumthangkha" #. name for kka msgid "Kakanda" @@ -12048,7 +12048,7 @@ msgstr "Kwerisa" #. name for kkc msgid "Odoodee" -msgstr "" +msgstr "Odoodee" #. name for kkd msgid "Kinuku" @@ -12060,7 +12060,7 @@ msgstr "Kakabe" #. name for kkf msgid "Monpa; Kalaktang" -msgstr "" +msgstr "Moinba; Kalaktang" #. name for kkg msgid "Kalinga; Mabaka Valley" @@ -12084,7 +12084,7 @@ msgstr "Kokota" #. name for kkl msgid "Yale; Kosarek" -msgstr "" +msgstr "Yale Kosarek" #. name for kkm msgid "Kiong" @@ -12100,7 +12100,7 @@ msgstr "Karko" #. name for kkp msgid "Gugubera" -msgstr "" +msgstr "Gugubera" #. name for kkq msgid "Kaiku" @@ -12112,7 +12112,7 @@ msgstr "Kir-Balar" #. name for kks msgid "Giiwo" -msgstr "" +msgstr "Giiwo" #. name for kkt msgid "Koi" @@ -12120,7 +12120,7 @@ msgstr "Koi" #. name for kku msgid "Tumi" -msgstr "" +msgstr "Tumi" #. name for kkv msgid "Kangean" @@ -12136,7 +12136,7 @@ msgstr "Kohin" #. name for kky msgid "Guguyimidjir" -msgstr "" +msgstr "Guguyimidjir" #. name for kkz msgid "Kaska" @@ -12156,7 +12156,7 @@ msgstr "Kolbila" #. name for kld msgid "Gamilaraay" -msgstr "" +msgstr "Kamilaroi" #. name for kle msgid "Kulung (Nepal)" @@ -12168,11 +12168,11 @@ msgstr "Kendeje" #. name for klg msgid "Tagakaulo" -msgstr "" +msgstr "Kalagan; Tagakaulu" #. name for klh msgid "Weliki" -msgstr "" +msgstr "Weliki" #. name for kli msgid "Kalumpang" @@ -12192,7 +12192,7 @@ msgstr "Kalagan; Kagan" #. name for klm msgid "Migum" -msgstr "" +msgstr "Kolom" #. name for kln msgid "Kalenjin" @@ -12208,7 +12208,7 @@ msgstr "Kamasa" #. name for klq msgid "Rumu" -msgstr "" +msgstr "Rumu" #. name for klr msgid "Khaling" @@ -12220,7 +12220,7 @@ msgstr "Kalasha" #. name for klt msgid "Nukna" -msgstr "" +msgstr "Komutu" #. name for klu msgid "Klao" @@ -12228,11 +12228,11 @@ msgstr "Klao" #. name for klv msgid "Maskelynes" -msgstr "" +msgstr "Maskelynes" #. name for klw msgid "Lindu" -msgstr "" +msgstr "Lindu" #. name for klx msgid "Koluwawa" @@ -12264,7 +12264,7 @@ msgstr "Kalinga; Majukayang" #. name for kme msgid "Bakole" -msgstr "" +msgstr "Bakole" #. name for kmf msgid "Kare (Papua New Guinea)" @@ -12300,7 +12300,7 @@ msgstr "Kom Rem" #. name for kmn msgid "Awtuw" -msgstr "" +msgstr "Awtuw" #. name for kmo msgid "Kwoma" @@ -12340,7 +12340,7 @@ msgstr "Komo (República Democràtica del Congo)" #. name for kmx msgid "Waboda" -msgstr "" +msgstr "Waboda" #. name for kmy msgid "Koma" @@ -12352,7 +12352,7 @@ msgstr "Turc Khorasani" #. name for kna msgid "Dera (Nigeria)" -msgstr "" +msgstr "Dera" #. name for knb msgid "Kalinga; Lubuagan" @@ -12372,7 +12372,7 @@ msgstr "Kankanaey" #. name for knf msgid "Mankanya" -msgstr "" +msgstr "Mankanya" #. name for kng msgid "Koongo" @@ -12432,7 +12432,7 @@ msgstr "Kono (Guinea Conakri)" #. name for knv msgid "Tabo" -msgstr "" +msgstr "Tabo" #. name for knw msgid "Kung-Ekoka" @@ -12472,7 +12472,7 @@ msgstr "Kubi" #. name for kog msgid "Cogui" -msgstr "" +msgstr "Cogui" #. name for koh msgid "Koyo" @@ -12484,7 +12484,7 @@ msgstr "Komi; Permiak" #. name for koj msgid "Sara Dunjo" -msgstr "" +msgstr "Sara; Dunjo" #. name for kok msgid "Konkani (macrolanguage)" @@ -12508,7 +12508,7 @@ msgstr "Konjo" #. name for kop msgid "Waube" -msgstr "" +msgstr "Kwato" #. name for koq msgid "Kota (Gabon)" @@ -12524,7 +12524,7 @@ msgstr "Kosraeà" #. name for kot msgid "Lagwan" -msgstr "" +msgstr "Lagwan" #. name for kou msgid "Koke" @@ -12540,7 +12540,7 @@ msgstr "Kugama" #. name for kox msgid "Coxima" -msgstr "" +msgstr "Coxima" #. name for koy msgid "Koyukon" @@ -12560,7 +12560,7 @@ msgstr "Kurumba; Mullu" #. name for kpc msgid "Curripaco" -msgstr "" +msgstr "Curripaco" #. name for kpd msgid "Koba" @@ -12624,7 +12624,7 @@ msgstr "Korafe" #. name for kps msgid "Tehit" -msgstr "" +msgstr "Tehit" #. name for kpt msgid "Karata" @@ -12656,7 +12656,7 @@ msgstr "Kupsabiny" #. name for kqa msgid "Mum" -msgstr "" +msgstr "Mum" #. name for kqb msgid "Kovai" @@ -12664,7 +12664,7 @@ msgstr "Kovai" #. name for kqc msgid "Doromu-Koki" -msgstr "" +msgstr "Doromu" #. name for kqd msgid "Koy Sanjaq Surat" @@ -12736,11 +12736,11 @@ msgstr "Kadazan; Klias" #. name for kqu msgid "Seroa" -msgstr "" +msgstr "Seroa" #. name for kqv msgid "Okolod" -msgstr "" +msgstr "Okolod" #. name for kqw msgid "Kandas" @@ -12748,7 +12748,7 @@ msgstr "Kandas" #. name for kqx msgid "Mser" -msgstr "" +msgstr "Mser" #. name for kqy msgid "Koorete" @@ -12776,7 +12776,7 @@ msgstr "Kairui-Midiki" #. name for kre msgid "Panará" -msgstr "" +msgstr "Krenakarore" #. name for krf msgid "Koro (Vanuatu)" @@ -12808,7 +12808,7 @@ msgstr "Krim" #. name for krn msgid "Sapo" -msgstr "" +msgstr "Sapo" #. name for krp msgid "Korop" @@ -12852,11 +12852,11 @@ msgstr "Kanum; Sota" #. name for ksa msgid "Shuwa-Zamani" -msgstr "" +msgstr "Shuwa-Zamani" #. name for ksb msgid "Shambala" -msgstr "" +msgstr "Shambala" #. name for ksc msgid "Kalinga; Southern" @@ -12872,7 +12872,7 @@ msgstr "Kuni" #. name for ksf msgid "Bafia" -msgstr "" +msgstr "Bafia" #. name for ksg msgid "Kusaghe" @@ -12888,7 +12888,7 @@ msgstr "Krisa" #. name for ksj msgid "Uare" -msgstr "" +msgstr "Uare" #. name for ksk msgid "Kansa" @@ -12920,7 +12920,7 @@ msgstr "Kwaami" #. name for ksr msgid "Borong" -msgstr "" +msgstr "Borong" #. name for kss msgid "Kisi; Southern" @@ -12928,7 +12928,7 @@ msgstr "Kissi; Meridional" #. name for kst msgid "Winyé" -msgstr "" +msgstr "Winyé" #. name for ksu msgid "Khamyang" @@ -12972,7 +12972,7 @@ msgstr "Kokata" #. name for kte msgid "Nubri" -msgstr "" +msgstr "Nubri" #. name for ktf msgid "Kwami" @@ -12988,7 +12988,7 @@ msgstr "Karanga" #. name for kti msgid "Muyu; North" -msgstr "" +msgstr "Muyu; Septentrional" #. name for ktj msgid "Krumen; Plapo" @@ -13028,7 +13028,7 @@ msgstr "Kota Marudu; Tinagas" #. name for kts msgid "Muyu; South" -msgstr "" +msgstr "Muyu; Meridional" #. name for ktt msgid "Ketum" @@ -13056,7 +13056,7 @@ msgstr "Kango; Septentrional" #. name for ktz msgid "Ju/'hoan" -msgstr "" +msgstr "Ju´hoan" #. name for kua msgid "Kuanyama" @@ -13072,7 +13072,7 @@ msgstr "" #. name for kud msgid "'Auhelawa" -msgstr "" +msgstr "Auhelawa" #. name for kue msgid "Kuman" @@ -13164,7 +13164,7 @@ msgstr "Kunza" #. name for kva msgid "Bagvalal" -msgstr "" +msgstr "Bagvalal" #. name for kvb msgid "Kubu" @@ -13200,7 +13200,7 @@ msgstr "Kwang" #. name for kvj msgid "Psikye" -msgstr "" +msgstr "Psikye" #. name for kvk msgid "Korean Sign Language" @@ -13220,7 +13220,7 @@ msgstr "Kuna; fronterer" #. name for kvo msgid "Dobel" -msgstr "" +msgstr "Dobel" #. name for kvp msgid "Kompane" @@ -13252,7 +13252,7 @@ msgstr "Kola" #. name for kvw msgid "Wersing" -msgstr "" +msgstr "Wersing" #. name for kvx msgid "Koli; Parkari" @@ -13264,11 +13264,11 @@ msgstr "Karen; Yintale" #. name for kvz msgid "Tsakwambo" -msgstr "" +msgstr "Tsakwambo" #. name for kwa msgid "Dâw" -msgstr "" +msgstr "Kamà" #. name for kwb msgid "Kwa" @@ -13276,7 +13276,7 @@ msgstr "Kwa" #. name for kwc msgid "Likwala" -msgstr "" +msgstr "Likwala" #. name for kwd msgid "Kwaio" @@ -13300,7 +13300,7 @@ msgstr "Kowiai" #. name for kwi msgid "Awa-Cuaiquer" -msgstr "" +msgstr "Awa (Equador)" #. name for kwj msgid "Kwanga" @@ -13384,7 +13384,7 @@ msgstr "Komso" #. name for kxd msgid "Brunei" -msgstr "" +msgstr "Malai; Brunei" #. name for kxe msgid "Kakihum" @@ -13460,7 +13460,7 @@ msgstr "Konai" #. name for kxx msgid "Likuba" -msgstr "" +msgstr "Likuba" #. name for kxy msgid "Kayong" @@ -13524,7 +13524,7 @@ msgstr "Kpatili" #. name for kyn msgid "Binukidnon; Northern" -msgstr "" +msgstr "Karolanos" #. name for kyo msgid "Kelon" @@ -13564,7 +13564,7 @@ msgstr "Kudmali" #. name for kyx msgid "Rapoisi" -msgstr "" +msgstr "Rapoisi" #. name for kyy msgid "Kambaira" @@ -13680,7 +13680,7 @@ msgstr "Kalabra" #. name for laa msgid "Subanen; Southern" -msgstr "" +msgstr "Subanun" #. name for lab msgid "Linear A" @@ -13696,7 +13696,7 @@ msgstr "Judeocastellà" #. name for lae msgid "Pattani" -msgstr "" +msgstr "Pattani" #. name for laf msgid "Lafofa" @@ -13744,7 +13744,7 @@ msgstr "Laka (Txad)" #. name for laq msgid "Qabiao" -msgstr "" +msgstr "Laqua" #. name for lar msgid "Larteh" @@ -13760,7 +13760,7 @@ msgstr "Llatí" #. name for lau msgid "Laba" -msgstr "" +msgstr "Laba" #. name for lav msgid "Latvian" @@ -13780,7 +13780,7 @@ msgstr "Lama (Myanmar)" #. name for laz msgid "Aribwatsa" -msgstr "" +msgstr "Aribwatsa" #. name for lba msgid "Lui" @@ -13800,7 +13800,7 @@ msgstr "Lak" #. name for lbf msgid "Tinani" -msgstr "" +msgstr "Tinani" #. name for lbg msgid "Laopang" @@ -13836,7 +13836,7 @@ msgstr "Laven" #. name for lbq msgid "Wampar" -msgstr "" +msgstr "Wampar" #. name for lbr msgid "Lorung; Northern" @@ -13860,7 +13860,7 @@ msgstr "Lavatbura-Lamusong" #. name for lbw msgid "Tolaki" -msgstr "" +msgstr "Tolaki" #. name for lbx msgid "Lawangan" @@ -13900,7 +13900,7 @@ msgstr "Buru; Lisela" #. name for lcm msgid "Tungag" -msgstr "" +msgstr "Tungag" #. name for lcp msgid "Lawa; Western" @@ -13916,7 +13916,7 @@ msgstr "Lisabata-Nuniali" #. name for ldb msgid "Idun" -msgstr "" +msgstr "Idun" #. name for ldd msgid "Luri" @@ -13944,7 +13944,7 @@ msgstr "Leelau" #. name for ldl msgid "Kaan" -msgstr "" +msgstr "Kaan" #. name for ldm msgid "Landoma" @@ -13960,7 +13960,7 @@ msgstr "Loo" #. name for ldp msgid "Tso" -msgstr "" +msgstr "Tso" #. name for ldq msgid "Lufu" @@ -14016,7 +14016,7 @@ msgstr "Lele (República Democràtica del Congo)" #. name for lem msgid "Nomaande" -msgstr "" +msgstr "Nomaande" #. name for len msgid "Lenca" @@ -14048,7 +14048,7 @@ msgstr "Lesing-Gelimi" #. name for leu msgid "Kara (Papua New Guinea)" -msgstr "" +msgstr "Kara (Papua Nova Guinea)" #. name for lev msgid "Lamma" @@ -14104,7 +14104,7 @@ msgstr "Lingarak" #. name for lgl msgid "Wala" -msgstr "" +msgstr "Wala" #. name for lgm msgid "Lega-Mwenga" @@ -14112,7 +14112,7 @@ msgstr "Lega; Mwenga" #. name for lgn msgid "Opuuo" -msgstr "" +msgstr "Opuuo" #. name for lgq msgid "Logba" @@ -14124,7 +14124,7 @@ msgstr "Lengo" #. name for lgt msgid "Pahi" -msgstr "" +msgstr "Pahi" #. name for lgu msgid "Longgu" @@ -14164,7 +14164,7 @@ msgstr "Lhokpu" #. name for lhs msgid "Mlahsö" -msgstr "" +msgstr "Arameu; Mlasho" #. name for lht msgid "Lo-Toga" @@ -14184,11 +14184,11 @@ msgstr "Likum" #. name for lic msgid "Hlai" -msgstr "" +msgstr "Hlai" #. name for lid msgid "Nyindrou" -msgstr "" +msgstr "Nyindrou" #. name for lie msgid "Likila" @@ -14236,7 +14236,7 @@ msgstr "Liki" #. name for lip msgid "Sekpele" -msgstr "" +msgstr "Sekpele" #. name for liq msgid "Libido" @@ -14264,7 +14264,7 @@ msgstr "Livonià" #. name for liw msgid "Col" -msgstr "" +msgstr "Lembak" #. name for lix msgid "Liabuku" @@ -14272,7 +14272,7 @@ msgstr "Liabuku" #. name for liy msgid "Banda-Bambari" -msgstr "" +msgstr "Banda; Bambari" #. name for liz msgid "Libinza" @@ -14280,7 +14280,7 @@ msgstr "Libinza" #. name for lje msgid "Rampi" -msgstr "" +msgstr "Rampi" #. name for lji msgid "Laiyolo" @@ -14300,7 +14300,7 @@ msgstr "Lakalei" #. name for lkb msgid "Kabras" -msgstr "" +msgstr "Luyia; Kabras" #. name for lkc msgid "Kucong" @@ -14312,7 +14312,7 @@ msgstr "Yalapmunxte" #. name for lke msgid "Kenyi" -msgstr "" +msgstr "Kenyi" #. name for lkh msgid "Lakha" @@ -14324,7 +14324,7 @@ msgstr "Leki" #. name for lkj msgid "Remun" -msgstr "" +msgstr "Remun" #. name for lkl msgid "Laeko-Libuat" @@ -14336,15 +14336,15 @@ msgstr "Lakona" #. name for lko msgid "Khayo" -msgstr "" +msgstr "Luyia; Khayo" #. name for lkr msgid "Päri" -msgstr "" +msgstr "Pari" #. name for lks msgid "Kisa" -msgstr "" +msgstr "Luyia; Kisa" #. name for lkt msgid "Lakota" @@ -14376,7 +14376,7 @@ msgstr "Lele (Papua Nova Guinea)" #. name for llf msgid "Hermit" -msgstr "" +msgstr "Hermit" #. name for llg msgid "Lole" @@ -14408,7 +14408,7 @@ msgstr "Lele (Txad)" #. name for llo msgid "Khlor" -msgstr "" +msgstr "Khlor" #. name for llp msgid "Efate; North" @@ -14436,7 +14436,7 @@ msgstr "Limba; Oriental" #. name for lmb msgid "Merei" -msgstr "" +msgstr "Merei" #. name for lmc msgid "Limilngan" @@ -14448,7 +14448,7 @@ msgstr "Lumun" #. name for lme msgid "Pévé" -msgstr "" +msgstr "Pevé" #. name for lmf msgid "Lembata; South" @@ -14476,7 +14476,7 @@ msgstr "Lamkang" #. name for lml msgid "Hano" -msgstr "" +msgstr "Hano" #. name for lmm msgid "Lamam" @@ -14532,7 +14532,7 @@ msgstr "Langbashe" #. name for lnb msgid "Mbalanhu" -msgstr "" +msgstr "Mbalanhu" #. name for lnd msgid "Lundayeh" @@ -14548,7 +14548,7 @@ msgstr "Lanoh" #. name for lni msgid "Daantanai'" -msgstr "" +msgstr "Lantanai" #. name for lnj msgid "Leningitij" @@ -14556,7 +14556,7 @@ msgstr "Leningitij" #. name for lnl msgid "Banda; South Central" -msgstr "" +msgstr "Banda; Sud centre" #. name for lnm msgid "Langam" @@ -14592,11 +14592,11 @@ msgstr "Lobi" #. name for loc msgid "Inonhan" -msgstr "" +msgstr "Inonhan" #. name for loe msgid "Coastal" -msgstr "" +msgstr "Saluà" #. name for lof msgid "Logol" @@ -14608,7 +14608,7 @@ msgstr "Logo" #. name for loh msgid "Narim" -msgstr "" +msgstr "Narim" #. name for loi msgid "Loma (Côte d'Ivoire)" @@ -14624,7 +14624,7 @@ msgstr "Loko" #. name for lol msgid "Mongo" -msgstr "" +msgstr "Mongo" #. name for lom msgid "Loma (Liberia)" @@ -14648,7 +14648,7 @@ msgstr "Lobala" #. name for lor msgid "Téén" -msgstr "" +msgstr "Teen" #. name for los msgid "Loniu" @@ -14656,7 +14656,7 @@ msgstr "Loniu" #. name for lot msgid "Otuho" -msgstr "" +msgstr "Lotuco" #. name for lou msgid "Creole French; Louisiana" @@ -14720,7 +14720,7 @@ msgstr "Laragia" #. name for lri msgid "Marachi" -msgstr "" +msgstr "Luyia; Marachi" #. name for lrk msgid "Loarki" @@ -14732,7 +14732,7 @@ msgstr "Lari" #. name for lrm msgid "Marama" -msgstr "" +msgstr "Luyia; Marama" #. name for lrn msgid "Lorang" @@ -14788,7 +14788,7 @@ msgstr "Llenguatge de signes letó" #. name for lsm msgid "Saamia" -msgstr "" +msgstr "Luyia; Saamia" #. name for lso msgid "Laos Sign Language" @@ -14800,7 +14800,7 @@ msgstr "Llenguatge de signes panamenc" #. name for lsr msgid "Aruop" -msgstr "" +msgstr "Aruop" #. name for lss msgid "Lasi" @@ -14820,7 +14820,7 @@ msgstr "Xinès; mitjà tardà" #. name for ltg msgid "Latgalian" -msgstr "" +msgstr "Letó; Oriental" #. name for lti msgid "Leti (Indonesia)" @@ -14832,11 +14832,11 @@ msgstr "Latundé" #. name for lto msgid "Tsotso" -msgstr "" +msgstr "Luyia; Tsotso" #. name for lts msgid "Tachoni" -msgstr "" +msgstr "Bukusu; Tachon" #. name for ltu msgid "Latu" @@ -14856,7 +14856,7 @@ msgstr "Luba; Katanga" #. name for luc msgid "Aringa" -msgstr "" +msgstr "Aringa" #. name for lud msgid "Ludian" @@ -14872,7 +14872,7 @@ msgstr "Laua" #. name for lug msgid "Ganda" -msgstr "" +msgstr "Ganda" #. name for lui msgid "Luiseno" @@ -14888,7 +14888,7 @@ msgstr "Lunanakha" #. name for lul msgid "Olu'bo" -msgstr "" +msgstr "Lulubo" #. name for lum msgid "Luimbi" @@ -14944,7 +14944,7 @@ msgstr "Lurí: Meridional" #. name for lva msgid "Maku'a" -msgstr "" +msgstr "Makua (Timor)" #. name for lvk msgid "Lavukaleve" @@ -14968,7 +14968,7 @@ msgstr "Lewo Eleng" #. name for lwg msgid "Wanga" -msgstr "" +msgstr "Luyia; Wanga" #. name for lwh msgid "Lachi; White" @@ -15036,7 +15036,7 @@ msgstr "Madurès" #. name for mae msgid "Bo-Rukul" -msgstr "" +msgstr "Bo-Rukul" #. name for maf msgid "Mafa" @@ -15096,7 +15096,7 @@ msgstr "Mazatec; Huautla" #. name for mav msgid "Sateré-Mawé" -msgstr "" +msgstr "Sateré-Mawé" #. name for maw msgid "Mampruli" @@ -15112,7 +15112,7 @@ msgstr "Mazahua; Central" #. name for mba msgid "Higaonon" -msgstr "" +msgstr "Higaonon" #. name for mbb msgid "Manobo; Western Bukidnon" @@ -15144,7 +15144,7 @@ msgstr "Manobo; Ilianen" #. name for mbj msgid "Nadëb" -msgstr "" +msgstr "Nadeb" #. name for mbk msgid "Malol" @@ -15156,7 +15156,7 @@ msgstr "Maxacali" #. name for mbm msgid "Ombamba" -msgstr "" +msgstr "Ngbaka Ma´bo" #. name for mbn msgid "Macaguán" @@ -15176,7 +15176,7 @@ msgstr "Maisin" #. name for mbr msgid "Nukak Makú" -msgstr "" +msgstr "Hupda; Nukak Makú" #. name for mbs msgid "Manobo; Sarangani" @@ -15220,11 +15220,11 @@ msgstr "Machiguenga" #. name for mcc msgid "Bitur" -msgstr "" +msgstr "Mutum" #. name for mcd msgid "Sharanahua" -msgstr "" +msgstr "Sharanahua" #. name for mce msgid "Mixtec; Itundujia" @@ -15276,7 +15276,7 @@ msgstr "Makaa" #. name for mcq msgid "Ese" -msgstr "" +msgstr "Ese" #. name for mcr msgid "Menya" @@ -15308,7 +15308,7 @@ msgstr "Mpiemo" #. name for mcy msgid "Watut; South" -msgstr "" +msgstr "Watut; Meridional" #. name for mcz msgid "Mawan" @@ -15404,7 +15404,7 @@ msgstr "Mbosi" #. name for mdx msgid "Dizin" -msgstr "" +msgstr "Dizi" #. name for mdy msgid "Male (Ethiopia)" @@ -15412,7 +15412,7 @@ msgstr "Male (Etiòpia)" #. name for mdz msgid "Suruí Do Pará" -msgstr "" +msgstr "Akwawa; Aikewara" #. name for mea msgid "Menka" @@ -15420,7 +15420,7 @@ msgstr "Menka" #. name for meb msgid "Ikobi-Mena" -msgstr "" +msgstr "Ikobi-Mena" #. name for mec msgid "Mara" @@ -15508,7 +15508,7 @@ msgstr "Maaka" #. name for mey msgid "Hassaniyya" -msgstr "" +msgstr "Àrab; Hassanya" #. name for mez msgid "Menominee" @@ -15520,7 +15520,7 @@ msgstr "Malai; Pattani" #. name for mfb msgid "Bangka" -msgstr "" +msgstr "Bangka" #. name for mfc msgid "Mba" @@ -15536,7 +15536,7 @@ msgstr "Crioll mauricià" #. name for mff msgid "Naki" -msgstr "" +msgstr "Naki" #. name for mfg msgid "Mixifore" @@ -15548,7 +15548,7 @@ msgstr "Matal" #. name for mfi msgid "Wandala" -msgstr "" +msgstr "Wandala" #. name for mfj msgid "Mefele" @@ -15560,7 +15560,7 @@ msgstr "Mofu; Septentrional" #. name for mfl msgid "Putai" -msgstr "" +msgstr "Putai" #. name for mfm msgid "Marghi South" @@ -15652,11 +15652,11 @@ msgstr "Makua; Meetto" #. name for mgi msgid "Lijili" -msgstr "" +msgstr "Lijili" #. name for mgj msgid "Abureni" -msgstr "" +msgstr "Abureni" #. name for mgk msgid "Mawes" @@ -15712,7 +15712,7 @@ msgstr "Matumbi" #. name for mgx msgid "Omati" -msgstr "" +msgstr "Omati" #. name for mgy msgid "Mbunga" @@ -15740,7 +15740,7 @@ msgstr "Mbugu" #. name for mhe msgid "Besisi" -msgstr "" +msgstr "Semelai; Besisi" #. name for mhf msgid "Mamaa" @@ -15796,7 +15796,7 @@ msgstr "Mari; Oriental" #. name for mhs msgid "Buru (Indonesia)" -msgstr "" +msgstr "Buru (Indonèsia)" #. name for mht msgid "Mandahuaca" @@ -15804,7 +15804,7 @@ msgstr "Mandahuaca" #. name for mhu msgid "Deng; Darang" -msgstr "" +msgstr "Digaro" #. name for mhw msgid "Mbukushu" @@ -15860,7 +15860,7 @@ msgstr "Mixtec; Chigmecatitlan" #. name for mij msgid "Abar" -msgstr "" +msgstr "Missong" #. name for mik msgid "Mikasuki" @@ -15908,7 +15908,7 @@ msgstr "Mixtec; Cacaloxtepec" #. name for miw msgid "Akoye" -msgstr "" +msgstr "Akoye" #. name for mix msgid "Mixtec; Mixtepec" @@ -15936,7 +15936,7 @@ msgstr "Muskum" #. name for mjg msgid "Tu" -msgstr "" +msgstr "Mongour" #. name for mjh msgid "Mwera (Nyasa)" @@ -15944,7 +15944,7 @@ msgstr "Mwera (Nyasa)" #. name for mji msgid "Kim Mun" -msgstr "" +msgstr "Kimmun" #. name for mjj msgid "Mawak" @@ -15988,7 +15988,7 @@ msgstr "Miship" #. name for mjt msgid "Sauria Paharia" -msgstr "" +msgstr "Sauria Paharia" #. name for mju msgid "Manna-Dora" @@ -16024,7 +16024,7 @@ msgstr "Mal Paharia" #. name for mkc msgid "Siliput" -msgstr "" +msgstr "Siliput" #. name for mkd msgid "Macedonian" @@ -16044,7 +16044,7 @@ msgstr "Mak (Xina)" #. name for mki msgid "Dhatki" -msgstr "" +msgstr "Dhatki" #. name for mkj msgid "Mokilese" @@ -16052,7 +16052,7 @@ msgstr "Mokilès" #. name for mkk msgid "Byep" -msgstr "" +msgstr "Byep" #. name for mkl msgid "Mokole" @@ -16088,7 +16088,7 @@ msgstr "Mixtec; Silacayoapan" #. name for mkt msgid "Vamale" -msgstr "" +msgstr "Vamale" #. name for mku msgid "Maninka; Konyanka" @@ -16100,7 +16100,7 @@ msgstr "Mafea" #. name for mkw msgid "Kituba (Congo)" -msgstr "" +msgstr "Kituba (Congo)" #. name for mkx msgid "Manobo; Kinamiging" @@ -16124,7 +16124,7 @@ msgstr "Mbule" #. name for mlc msgid "Cao Lan" -msgstr "" +msgstr "Cao Lan" #. name for mld msgid "Malakhel" @@ -16156,7 +16156,7 @@ msgstr "Miltu" #. name for mlk msgid "Ilwana" -msgstr "" +msgstr "Malakote" #. name for mll msgid "Malua Bay" @@ -16176,7 +16176,7 @@ msgstr "Mlomp" #. name for mlp msgid "Bargam" -msgstr "" +msgstr "Bargam" #. name for mlq msgid "Maninkakan; Western" @@ -16184,7 +16184,7 @@ msgstr "Maninkakan; occidental" #. name for mlr msgid "Vame" -msgstr "" +msgstr "Vame" #. name for mls msgid "Masalit" @@ -16196,7 +16196,7 @@ msgstr "Maltès" #. name for mlu msgid "To'abaita" -msgstr "" +msgstr "To'abaita" #. name for mlv msgid "Motlav" @@ -16240,7 +16240,7 @@ msgstr "Mundat" #. name for mmg msgid "Ambrym; North" -msgstr "" +msgstr "Ambrym; Septentrional" #. name for mmh msgid "Mehináku" @@ -16272,11 +16272,11 @@ msgstr "Mamanwa" #. name for mmo msgid "Buang; Mangga" -msgstr "" +msgstr "Buang; Mangga" #. name for mmp msgid "Siawi" -msgstr "" +msgstr "Amto; Siawi" #. name for mmq msgid "Musak" @@ -16300,7 +16300,7 @@ msgstr "Mirití" #. name for mmw msgid "Emae" -msgstr "" +msgstr "Emae" #. name for mmx msgid "Madak" @@ -16332,7 +16332,7 @@ msgstr "Mondé" #. name for mne msgid "Naba" -msgstr "" +msgstr "Naba" #. name for mnf msgid "Mundani" @@ -16360,7 +16360,7 @@ msgstr "Manding" #. name for mnl msgid "Tiale" -msgstr "" +msgstr "Tiale" #. name for mnm msgid "Mapena" @@ -16396,7 +16396,7 @@ msgstr "Mer" #. name for mnv msgid "Rennell-Bellona" -msgstr "" +msgstr "Rennell-Bellona" #. name for mnw msgid "Mon" @@ -16480,7 +16480,7 @@ msgstr "Moré" #. name for mot msgid "Barí" -msgstr "" +msgstr "Bari (Colòmbia)" #. name for mou msgid "Mogum" @@ -16500,7 +16500,7 @@ msgstr "Molima" #. name for moy msgid "Shekkacho" -msgstr "" +msgstr "Shekkacho" #. name for moz msgid "Mukulu" @@ -16548,7 +16548,7 @@ msgstr "Mbara (Txad)" #. name for mpl msgid "Watut; Middle" -msgstr "" +msgstr "Watut; Mig" #. name for mpm msgid "Mixtec; Yosondúa" @@ -16572,11 +16572,11 @@ msgstr "Matis" #. name for mpr msgid "Vangunu" -msgstr "" +msgstr "Vangunu" #. name for mps msgid "Dadibi" -msgstr "" +msgstr "Dadibi" #. name for mpt msgid "Mian" @@ -16728,7 +16728,7 @@ msgstr "Llenguatge de signes de Martha Vineyard" #. name for mrf msgid "Elseng" -msgstr "" +msgstr "Elseng" #. name for mrg msgid "Mising" @@ -16748,7 +16748,7 @@ msgstr "Mari; Occidental" #. name for mrk msgid "Hmwaveke" -msgstr "" +msgstr "Hmwaveke" #. name for mrl msgid "Mortlockese" @@ -16760,7 +16760,7 @@ msgstr "Merlav" #. name for mrn msgid "Cheke Holo" -msgstr "" +msgstr "Cheke Holo" #. name for mro msgid "Mru" @@ -16864,7 +16864,7 @@ msgstr "Manobo; Agusan" #. name for msn msgid "Vurës" -msgstr "" +msgstr "Mosina" #. name for mso msgid "Mombum" @@ -16876,7 +16876,7 @@ msgstr "Maritsauà" #. name for msq msgid "Caac" -msgstr "" +msgstr "Caac" #. name for msr msgid "Mongolian Sign Language" @@ -16904,7 +16904,7 @@ msgstr "Moresada" #. name for msy msgid "Aruamu" -msgstr "" +msgstr "Aruamu" #. name for msz msgid "Momare" @@ -16916,7 +16916,7 @@ msgstr "Manobo; Cotabato" #. name for mtb msgid "Anyin Morofo" -msgstr "" +msgstr "Anyi; Morofo" #. name for mtc msgid "Munit" @@ -16936,7 +16936,7 @@ msgstr "Múric" #. name for mtg msgid "Una" -msgstr "" +msgstr "Una" #. name for mth msgid "Munggui" @@ -16972,7 +16972,7 @@ msgstr "Mixe; Totontepec" #. name for mtp msgid "Wichí Lhamtés Nocten" -msgstr "" +msgstr "Wichí; Nocten" #. name for mtq msgid "Muong" @@ -16984,7 +16984,7 @@ msgstr "Mewari" #. name for mts msgid "Yora" -msgstr "" +msgstr "Yora" #. name for mtt msgid "Mota" @@ -16996,11 +16996,11 @@ msgstr "Mixtec; Tututepec" #. name for mtv msgid "Asaro'o" -msgstr "" +msgstr "Asaro'o" #. name for mtw msgid "Binukidnon; Southern" -msgstr "" +msgstr "Magahat" #. name for mtx msgid "Mixtec; Tidaá" @@ -17008,7 +17008,7 @@ msgstr "Mixtec; Tidaà" #. name for mty msgid "Nabi" -msgstr "" +msgstr "Nabi" #. name for mua msgid "Mundang" @@ -17024,7 +17024,7 @@ msgstr "Mbu" #. name for mud msgid "Aleut; Mednyj" -msgstr "" +msgstr "Aleut Mednyj" #. name for mue msgid "Media Lengua" @@ -17060,7 +17060,7 @@ msgstr "Maiwala" #. name for muo msgid "Nyong" -msgstr "" +msgstr "Nyong" #. name for mup msgid "Malvi" @@ -17076,7 +17076,7 @@ msgstr "Murle" #. name for mus msgid "Creek" -msgstr "" +msgstr "Muscoga" #. name for mut msgid "Muria; Western" @@ -17084,7 +17084,7 @@ msgstr "Muria; occidental" #. name for muu msgid "Yaaku" -msgstr "" +msgstr "Yaaku (Kenya)" #. name for muv msgid "Muthuvan" @@ -17092,7 +17092,7 @@ msgstr "Muthuvan" #. name for mux msgid "Bo-Ung" -msgstr "" +msgstr "Mboung" #. name for muy msgid "Muyang" @@ -17156,7 +17156,7 @@ msgstr "Marovo" #. name for mvp msgid "Duri" -msgstr "" +msgstr "Duri" #. name for mvq msgid "Moere" @@ -17192,7 +17192,7 @@ msgstr "Meoswar" #. name for mvy msgid "Kohistani; Indus" -msgstr "" +msgstr "Kohistani Indus" #. name for mvz msgid "Mesqan" @@ -17204,11 +17204,11 @@ msgstr "Mwatebu" #. name for mwb msgid "Juwal" -msgstr "" +msgstr "Muniwara" #. name for mwc msgid "Are" -msgstr "" +msgstr "Mukawa" #. name for mwd msgid "Mudbura" @@ -17224,7 +17224,7 @@ msgstr "Murrinh-Patha" #. name for mwg msgid "Aiklep" -msgstr "" +msgstr "Aiklep" #. name for mwh msgid "Mouk-Aria" @@ -17232,7 +17232,7 @@ msgstr "Mouk-Aria" #. name for mwi msgid "Labo" -msgstr "" +msgstr "Labo" #. name for mwj msgid "Maligo" @@ -17248,11 +17248,11 @@ msgstr "Mirandès" #. name for mwm msgid "Sar" -msgstr "" +msgstr "Sar" #. name for mwn msgid "Nyamwanga" -msgstr "" +msgstr "Mwanga" #. name for mwo msgid "Maewo; Central" @@ -17260,7 +17260,7 @@ msgstr "Maewo" #. name for mwp msgid "Kala Lagaw Ya" -msgstr "" +msgstr "Mabuyag" #. name for mwq msgid "Chin; Mün" @@ -17340,7 +17340,7 @@ msgstr "Mossaràbic" #. name for mxj msgid "Deng; Geman" -msgstr "" +msgstr "Miju" #. name for mxk msgid "Monumbo" @@ -17392,7 +17392,7 @@ msgstr "Mixtec; Metlatonoc" #. name for mxw msgid "Namo" -msgstr "" +msgstr "Namo" #. name for mxx msgid "Mahou" @@ -17408,7 +17408,7 @@ msgstr "Masela; Central" #. name for mya msgid "Burmese" -msgstr "birmà" +msgstr "Birmà" #. name for myb msgid "Mbay" @@ -17428,7 +17428,7 @@ msgstr "Myene" #. name for myf msgid "Bambassi" -msgstr "" +msgstr "Bambassi" #. name for myg msgid "Manta" @@ -17460,11 +17460,11 @@ msgstr "Meen" #. name for myo msgid "Anfillo" -msgstr "" +msgstr "Anfillo" #. name for myp msgid "Pirahã" -msgstr "" +msgstr "Pirahà" #. name for myq msgid "Maninka; Forest" @@ -17484,7 +17484,7 @@ msgstr "Munduruku" #. name for myv msgid "Erzya" -msgstr "" +msgstr "Erzya" #. name for myw msgid "Muyuw" @@ -17508,7 +17508,7 @@ msgstr "Mixtec; Santa Maria Zacatepec" #. name for mzb msgid "Tumzabt" -msgstr "" +msgstr "Tamazight; Mazab" #. name for mzc msgid "Madagascar Sign Language" @@ -17528,7 +17528,7 @@ msgstr "Llenguatge de signes monàstic" #. name for mzh msgid "Wichí Lhamtés Güisnay" -msgstr "" +msgstr "Wichí; Guisnay" #. name for mzi msgid "Mazatec; Ixcatlán" @@ -17580,7 +17580,7 @@ msgstr "Mintil" #. name for mzu msgid "Inapang" -msgstr "" +msgstr "Inapang" #. name for mzv msgid "Manza" @@ -17588,7 +17588,7 @@ msgstr "Manza" #. name for mzw msgid "Deg" -msgstr "" +msgstr "Deg" #. name for mzx msgid "Mawayana" @@ -17664,7 +17664,7 @@ msgstr "Nama (Namíbia)" #. name for nar msgid "Iguta" -msgstr "" +msgstr "Iguta" #. name for nas msgid "Naasioi" @@ -17672,7 +17672,7 @@ msgstr "Nasioi" #. name for nat msgid "Hungworo" -msgstr "" +msgstr "Hungworo" #. name for nau msgid "Nauru" @@ -17748,15 +17748,15 @@ msgstr "Ngbaka Ma'bo" #. name for nbn msgid "Kuri" -msgstr "" +msgstr "Kuri" #. name for nbo msgid "Nkukoli" -msgstr "" +msgstr "Nkukoli" #. name for nbp msgid "Nnam" -msgstr "" +msgstr "Nnam" #. name for nbq msgid "Nggem" @@ -17796,7 +17796,7 @@ msgstr "Ningera" #. name for nca msgid "Iyo" -msgstr "" +msgstr "Nahu" #. name for ncb msgid "Nicobarese; Central" @@ -17804,7 +17804,7 @@ msgstr "Nicobarès; central" #. name for ncc msgid "Ponam" -msgstr "" +msgstr "Ponam" #. name for ncd msgid "Nachering" @@ -17812,7 +17812,7 @@ msgstr "Nachering" #. name for nce msgid "Yale" -msgstr "" +msgstr "Iale" #. name for ncf msgid "Notsi" @@ -17852,7 +17852,7 @@ msgstr "Nauna" #. name for nco msgid "Sibe" -msgstr "" +msgstr "Nagovisi" #. name for ncp msgid "Ndaktup" @@ -17872,7 +17872,7 @@ msgstr "Naga; Chothe" #. name for ncu msgid "Chumburung" -msgstr "" +msgstr "Chumburung" #. name for ncx msgid "Nahuatl; Central Puebla" @@ -17888,7 +17888,7 @@ msgstr "Ndasa" #. name for ndb msgid "Kenswei Nsei" -msgstr "" +msgstr "Kenswei Nsei" #. name for ndc msgid "Ndau" @@ -17916,7 +17916,7 @@ msgstr "Ndali" #. name for ndi msgid "Samba Leko" -msgstr "" +msgstr "Samba Leko" #. name for ndj msgid "Ndamba" @@ -17964,7 +17964,7 @@ msgstr "Ndunga" #. name for ndu msgid "Dugun" -msgstr "" +msgstr "Dugun" #. name for ndv msgid "Ndut" @@ -17980,7 +17980,7 @@ msgstr "Nduga" #. name for ndy msgid "Lutos" -msgstr "" +msgstr "Lutos" #. name for ndz msgid "Ndogo" @@ -18052,7 +18052,7 @@ msgstr "Mixe; Septentrional" #. name for ner msgid "Yahadian" -msgstr "" +msgstr "Yahadià" #. name for nes msgid "Kinnauri; Bhoti" @@ -18068,7 +18068,7 @@ msgstr "Nyaheun" #. name for new msgid "Bhasa; Nepal" -msgstr "" +msgstr "Newar" #. name for nex msgid "Neme" @@ -18084,15 +18084,15 @@ msgstr "Nez" #. name for nfa msgid "Dhao" -msgstr "" +msgstr "Ndao" #. name for nfd msgid "Ahwai" -msgstr "" +msgstr "Ndun" #. name for nfl msgid "Ayiwo" -msgstr "" +msgstr "Ayiwo" #. name for nfr msgid "Nafaanra" @@ -18100,7 +18100,7 @@ msgstr "Nafaanra" #. name for nfu msgid "Mfumte" -msgstr "" +msgstr "Mfumte" #. name for nga msgid "Ngbaka" @@ -18172,7 +18172,7 @@ msgstr "Nanggu" #. name for ngs msgid "Gvoko" -msgstr "" +msgstr "Gevoko" #. name for ngt msgid "Ngeq" @@ -18196,7 +18196,7 @@ msgstr "Nggwahyi" #. name for ngy msgid "Tibea" -msgstr "" +msgstr "Tibea" #. name for ngz msgid "Ngungwel" @@ -18208,7 +18208,7 @@ msgstr "" #. name for nhb msgid "Beng" -msgstr "" +msgstr "Beng" #. name for nhc msgid "Nahuatl; Tabasco" @@ -18252,7 +18252,7 @@ msgstr "Nàhuatl; Central" #. name for nho msgid "Takuu" -msgstr "" +msgstr "Takuu" #. name for nhp msgid "Nahuatl; Isthmus-Pajapan" @@ -18380,7 +18380,7 @@ msgstr "Nimo" #. name for nix msgid "Hema" -msgstr "" +msgstr "Hema" #. name for niy msgid "Ngiti" @@ -18408,7 +18408,7 @@ msgstr "Naga; Lotha" #. name for nji msgid "Gudanji" -msgstr "" +msgstr "Gudanji" #. name for njj msgid "Njen" @@ -18448,7 +18448,7 @@ msgstr "Ngadjunmaya" #. name for njx msgid "Kunyi" -msgstr "" +msgstr "Kunyi" #. name for njy msgid "Njyem" @@ -18468,11 +18468,11 @@ msgstr "Nkongho" #. name for nkd msgid "Koireng" -msgstr "" +msgstr "Koireng" #. name for nke msgid "Duke" -msgstr "" +msgstr "Duke" #. name for nkf msgid "Naga; Inpui" @@ -18568,11 +18568,11 @@ msgstr "Nyala" #. name for nlg msgid "Gela" -msgstr "" +msgstr "Gela" #. name for nli msgid "Grangali" -msgstr "" +msgstr "Grangali" #. name for nlj msgid "Nyali" @@ -18580,7 +18580,7 @@ msgstr "Nyali" #. name for nlk msgid "Yali; Ninia" -msgstr "" +msgstr "Yali; Ninia" #. name for nll msgid "Nihali" @@ -18644,7 +18644,7 @@ msgstr "Naga; Tangkhul" #. name for nmg msgid "Kwasio" -msgstr "" +msgstr "Ngumba" #. name for nmh msgid "Naga; Monsang" @@ -18668,11 +18668,11 @@ msgstr "Ndemli" #. name for nmm msgid "Manangba" -msgstr "" +msgstr "Manangba" #. name for nmn msgid "!Xóõ" -msgstr "" +msgstr "Xoo" #. name for nmo msgid "Naga; Moyon" @@ -18692,7 +18692,7 @@ msgstr "Nimbari" #. name for nms msgid "Letemboi" -msgstr "" +msgstr "Letemboi" #. name for nmt msgid "Namonuito" @@ -18736,7 +18736,7 @@ msgstr "Nanceré" #. name for nnd msgid "Ambae; West" -msgstr "" +msgstr "Ambae; Occidental" #. name for nne msgid "Ngandyera" @@ -18804,7 +18804,7 @@ msgstr "Nanticoke" #. name for nnu msgid "Dwang" -msgstr "" +msgstr "Dwang" #. name for nnv msgid "Nugunu (Australia)" @@ -18828,7 +18828,7 @@ msgstr "Ndanda" #. name for noa msgid "Woun Meu" -msgstr "" +msgstr "Waunana" #. name for nob msgid "Norwegian Bokmål" @@ -18900,7 +18900,7 @@ msgstr "Nomatsiguenga" #. name for nou msgid "Ewage-Notu" -msgstr "" +msgstr "Ewage-Notu" #. name for nov msgid "Novial" @@ -18936,7 +18936,7 @@ msgstr "Nàhuatl; Puebla sudoriental" #. name for npn msgid "Mondropolon" -msgstr "" +msgstr "Mondropolon" #. name for npo msgid "Naga; Pochuri" @@ -19012,7 +19012,7 @@ msgstr "Norn" #. name for nrp msgid "Picene; North" -msgstr "" +msgstr "Picene; Septentrional" #. name for nrr msgid "Norra" @@ -19020,7 +19020,7 @@ msgstr "Norra" #. name for nrt msgid "Kalapuya; Northern" -msgstr "" +msgstr "Kalapuya; Tualatin" #. name for nru msgid "Narua" @@ -19032,7 +19032,7 @@ msgstr "Ngurmbur" #. name for nrz msgid "Lala" -msgstr "" +msgstr "Nara" #. name for nsa msgid "Naga; Sangtam" @@ -19080,7 +19080,7 @@ msgstr "Nehan" #. name for nso msgid "Sotho; Northern" -msgstr "" +msgstr "Sotho; Septentrional" #. name for nsp msgid "Nepalese Sign Language" @@ -19140,7 +19140,7 @@ msgstr "Ngaanyatjarra" #. name for ntk msgid "Ikoma-Nata-Isenye" -msgstr "" +msgstr "Ikoma" #. name for ntm msgid "Nateni" @@ -19156,7 +19156,7 @@ msgstr "Tepehuà; Septentrional" #. name for ntr msgid "Delo" -msgstr "" +msgstr "Delo" #. name for nts msgid "Natagaimas" @@ -19172,7 +19172,7 @@ msgstr "Nottoway" #. name for nty msgid "Mantsi" -msgstr "" +msgstr "Mantsi" #. name for ntz msgid "Natanzi" @@ -19180,7 +19180,7 @@ msgstr "Natanzi" #. name for nua msgid "Yuaga" -msgstr "" +msgstr "Yuaga" #. name for nuc msgid "Nukuini" @@ -19216,7 +19216,7 @@ msgstr "Nyole" #. name for nuk msgid "Nuu-chah-nulth" -msgstr "" +msgstr "Nootka" #. name for nul msgid "Nusa Laut" @@ -19228,7 +19228,7 @@ msgstr "Niuafo'ou" #. name for nun msgid "Anong" -msgstr "" +msgstr "Nung" #. name for nuo msgid "Nguôn" @@ -19268,7 +19268,7 @@ msgstr "Nguluwà" #. name for nux msgid "Mehek" -msgstr "" +msgstr "Mehek" #. name for nuy msgid "Nunggubuyu" @@ -19384,7 +19384,7 @@ msgstr "Nyanga-li" #. name for nyd msgid "Nyore" -msgstr "" +msgstr "Nyore" #. name for nye msgid "Nyengo" @@ -19392,7 +19392,7 @@ msgstr "Nyengo" #. name for nyf msgid "Giryama" -msgstr "" +msgstr "Giryama" #. name for nyg msgid "Nyindu" @@ -19404,7 +19404,7 @@ msgstr "Nyigina" #. name for nyi msgid "Ama (Sudan)" -msgstr "" +msgstr "Nyima" #. name for nyj msgid "Nyanga" @@ -19520,7 +19520,7 @@ msgstr "Arameu; antic (fins 700 AC)" #. name for oav msgid "Avar; Old" -msgstr "" +msgstr "Àvar; Antic" #. name for obi msgid "Obispeño" @@ -19536,7 +19536,7 @@ msgstr "Oblo" #. name for obm msgid "Moabite" -msgstr "" +msgstr "Moabita" #. name for obo msgid "Manobo; Obo" @@ -19544,7 +19544,7 @@ msgstr "Manobo; Obo" #. name for obr msgid "Burmese; Old" -msgstr "" +msgstr "Birmà; Antic" #. name for obt msgid "Breton; Old" @@ -19600,7 +19600,7 @@ msgstr "Frisó; antic" #. name for ofu msgid "Efutop" -msgstr "" +msgstr "Efutop" #. name for ogb msgid "Ogbia" @@ -19612,7 +19612,7 @@ msgstr "Ogbah" #. name for oge msgid "Georgian; Old" -msgstr "" +msgstr "Georgià; Antic" #. name for ogg msgid "Ogbogolo" @@ -19620,7 +19620,7 @@ msgstr "Ogbogolo" #. name for ogo msgid "Khana" -msgstr "" +msgstr "Khana" #. name for ogu msgid "Ogbronuagum" @@ -19692,7 +19692,7 @@ msgstr "Okpe" #. name for okh msgid "Koresh-e Rostam" -msgstr "" +msgstr "Koresh-e Rostam" #. name for oki msgid "Okiek" @@ -19712,7 +19712,7 @@ msgstr "Llenguatge de signes Kentish; antic" #. name for okm msgid "Korean; Middle (10th-16th cent.)" -msgstr "" +msgstr "Coreà; Mig (segles X-XVI)" #. name for okn msgid "Oki-No-Erabu" @@ -19720,11 +19720,11 @@ msgstr "Oki-No-Erabu" #. name for oko msgid "Korean; Old (3rd-9th cent.)" -msgstr "" +msgstr "Coreà; Antic (segles VI-X)" #. name for okr msgid "Kirike" -msgstr "" +msgstr "Kirike" #. name for oks msgid "Oko-Eni-Osayen" @@ -19744,11 +19744,11 @@ msgstr "Okpe-Idesa-Akuku; Okpe" #. name for ola msgid "Walungge" -msgstr "" +msgstr "Walungge" #. name for old msgid "Mochi" -msgstr "" +msgstr "Mochi" #. name for ole msgid "Olekha" @@ -19760,7 +19760,7 @@ msgstr "Oloma" #. name for olo msgid "Livvi" -msgstr "" +msgstr "Olonetsià" #. name for olr msgid "Olrat" @@ -19772,11 +19772,11 @@ msgstr "Omaha-Ponca" #. name for omb msgid "Ambae; East" -msgstr "" +msgstr "Ambae; Oriental" #. name for omc msgid "Mochica" -msgstr "" +msgstr "Mochica" #. name for ome msgid "Omejes" @@ -19800,19 +19800,19 @@ msgstr "Ombo" #. name for omn msgid "Minoan" -msgstr "" +msgstr "Minoà" #. name for omo msgid "Utarmbung" -msgstr "" +msgstr "Utarmbung" #. name for omp msgid "Manipuri; Old" -msgstr "" +msgstr "Manipurí antic" #. name for omr msgid "Marathi; Old" -msgstr "" +msgstr "Marathi antic" #. name for omt msgid "Omotik" @@ -19828,7 +19828,7 @@ msgstr "Tairora; Meridional" #. name for omx msgid "Mon; Old" -msgstr "" +msgstr "Mon antic" #. name for ona msgid "Ona" @@ -19836,7 +19836,7 @@ msgstr "Ona" #. name for onb msgid "Lingao" -msgstr "" +msgstr "Lingao" #. name for one msgid "Oneida" @@ -19884,11 +19884,11 @@ msgstr "Ontenu" #. name for onu msgid "Unua" -msgstr "" +msgstr "Unua" #. name for onw msgid "Nubian; Old" -msgstr "" +msgstr "Nubi antic" #. name for onx msgid "Onin Based Pidgin" @@ -19896,7 +19896,7 @@ msgstr "Onin; ; parla mixta" #. name for ood msgid "Tohono O'odham" -msgstr "" +msgstr "Papago-Pima" #. name for oog msgid "Ong" @@ -19920,7 +19920,7 @@ msgstr "Okpamheri" #. name for opk msgid "Kopkaka" -msgstr "" +msgstr "Kopkaka" #. name for opm msgid "Oksapmin" @@ -20040,7 +20040,7 @@ msgstr "One; Meridional" #. name for osx msgid "Saxon; Old" -msgstr "" +msgstr "Saxó antic" #. name for ota msgid "Turkish; Ottoman (1500-1928)" @@ -20048,7 +20048,7 @@ msgstr "Turc; otomà (1500-1928)" #. name for otb msgid "Tibetan; Old" -msgstr "" +msgstr "Tibetà; Antic" #. name for otd msgid "Ot Danum" @@ -20108,7 +20108,7 @@ msgstr "Otomí; Texcatepec" #. name for oty msgid "Tamil; Old" -msgstr "" +msgstr "Tamil antic" #. name for otz msgid "Otomi; Ixtenco" @@ -20116,11 +20116,11 @@ msgstr "Otomí; Ixtenc" #. name for oua msgid "Tagargrent" -msgstr "" +msgstr "Tagargrent" #. name for oub msgid "Glio-Oubi" -msgstr "" +msgstr "Glio-Oubi" #. name for oue msgid "Oune" @@ -20128,7 +20128,7 @@ msgstr "Oune" #. name for oui msgid "Uighur; Old" -msgstr "" +msgstr "Uigur antic" #. name for oum msgid "Ouma" @@ -20156,7 +20156,7 @@ msgstr "Oyda" #. name for oym msgid "Wayampi" -msgstr "" +msgstr "Wayampi" #. name for oyy msgid "Oya'oya" @@ -20164,7 +20164,7 @@ msgstr "Oya'oya" #. name for ozm msgid "Koonzime" -msgstr "" +msgstr "Koonzime" #. name for pab msgid "Parecís" @@ -20192,7 +20192,7 @@ msgstr "Pangasi" #. name for pah msgid "Tenharim" -msgstr "" +msgstr "Tenharim" #. name for pai msgid "Pe" @@ -20284,7 +20284,7 @@ msgstr "Paraujano" #. name for pbh msgid "E'ñapa Woromaipu" -msgstr "" +msgstr "Abira" #. name for pbi msgid "Parkwa" @@ -20296,7 +20296,7 @@ msgstr "Mak (Nigèria)" #. name for pbn msgid "Kpasam" -msgstr "" +msgstr "Kpasam" #. name for pbo msgid "Papel" @@ -20304,7 +20304,7 @@ msgstr "Papel" #. name for pbp msgid "Badyara" -msgstr "" +msgstr "Badjara" #. name for pbr msgid "Pangwa" @@ -20344,7 +20344,7 @@ msgstr "Pear" #. name for pcc msgid "Bouyei" -msgstr "" +msgstr "Buyí" #. name for pcd msgid "Picard" @@ -20368,7 +20368,7 @@ msgstr "Pardhan" #. name for pci msgid "Duruwa" -msgstr "" +msgstr "Parji" #. name for pcj msgid "Parenga" @@ -20404,7 +20404,7 @@ msgstr "Pyapun" #. name for pda msgid "Anam" -msgstr "" +msgstr "Anam" #. name for pdc msgid "German; Pennsylvania" @@ -20432,7 +20432,7 @@ msgstr "Karen; Padaung" #. name for pea msgid "Indonesian; Peranakan" -msgstr "" +msgstr "Indonesi Peranakan" #. name for peb msgid "Pomo; Eastern" @@ -20440,11 +20440,11 @@ msgstr "Pomo; Oriental" #. name for ped msgid "Mala (Papua New Guinea)" -msgstr "" +msgstr "Mala (Papua Nova Guinea)" #. name for pee msgid "Taje" -msgstr "" +msgstr "Taje" #. name for pef msgid "Pomo; Northeastern" @@ -20456,11 +20456,11 @@ msgstr "Pengo" #. name for peh msgid "Bonan" -msgstr "" +msgstr "Bonan" #. name for pei msgid "Chichimeca-Jonaz" -msgstr "" +msgstr "Chichimec" #. name for pej msgid "Pomo; Northern" @@ -20484,7 +20484,7 @@ msgstr "Persa Antic" #. name for pep msgid "Kunja" -msgstr "" +msgstr "Kunja" #. name for peq msgid "Pomo; Southern" @@ -20536,7 +20536,7 @@ msgstr "Pagi" #. name for pgk msgid "Rerep" -msgstr "" +msgstr "Rerep" #. name for pgl msgid "Irish; Primitive" @@ -20624,7 +20624,7 @@ msgstr "Pima Baix" #. name for pib msgid "Yine" -msgstr "" +msgstr "Yine" #. name for pic msgid "Pinji" @@ -20660,7 +20660,7 @@ msgstr "Pijao" #. name for pil msgid "Yom" -msgstr "" +msgstr "Yom" #. name for pim msgid "Powhatan" @@ -20760,7 +20760,7 @@ msgstr "Llenguatge de signes pakistaní" #. name for pkt msgid "Maleng" -msgstr "" +msgstr "Maleng" #. name for pku msgid "Paku" @@ -20768,7 +20768,7 @@ msgstr "Paku" #. name for pla msgid "Miani" -msgstr "" +msgstr "Miani" #. name for plb msgid "Polonombauk" @@ -20804,7 +20804,7 @@ msgstr "Polci" #. name for plk msgid "Shina; Kohistani" -msgstr "" +msgstr "Shina; Kohistani" #. name for pll msgid "Palaung; Shwe" @@ -20852,7 +20852,7 @@ msgstr "Palawà; Brooke" #. name for ply msgid "Bolyu" -msgstr "" +msgstr "Bolyu" #. name for plz msgid "Paluan" @@ -20896,7 +20896,7 @@ msgstr "Algonquí Carolina" #. name for pml msgid "Lingua Franca" -msgstr "" +msgstr "Aljamia" #. name for pmm msgid "Pomo" @@ -20924,7 +20924,7 @@ msgstr "Piemontès" #. name for pmt msgid "Tuamotuan" -msgstr "" +msgstr "Tuamotu" #. name for pmu msgid "Panjabi; Mirpur" @@ -20972,7 +20972,7 @@ msgstr "Penrhyn" #. name for pni msgid "Aoheng" -msgstr "" +msgstr "Aoheng" #. name for pnm msgid "Punan Batu 1" @@ -21008,7 +21008,7 @@ msgstr "Pontic" #. name for pnu msgid "Bunu; Jiongnai" -msgstr "" +msgstr "Bunu; Jiongnai" #. name for pnv msgid "Pinigura" @@ -21100,7 +21100,7 @@ msgstr "Potavatomi" #. name for pov msgid "Crioulo; Upper Guinea" -msgstr "" +msgstr "Crioll guineà" #. name for pow msgid "Popoloca; San Felipe Otlaltepec" @@ -21128,7 +21128,7 @@ msgstr "Paipai" #. name for ppk msgid "Uma" -msgstr "" +msgstr "Uma" #. name for ppl msgid "Pipil" @@ -21144,7 +21144,7 @@ msgstr "Papapana" #. name for ppo msgid "Folopa" -msgstr "" +msgstr "Folopa" #. name for ppp msgid "Pelende" @@ -21180,7 +21180,7 @@ msgstr "Malecite-Passamaquoddy" #. name for prb msgid "Lua'" -msgstr "" +msgstr "Lua" #. name for prc msgid "Parachi" @@ -21220,7 +21220,7 @@ msgstr "Llenguatge de signes peruà" #. name for prm msgid "Kibiri" -msgstr "" +msgstr "Kibiri" #. name for prn msgid "Prasuni" @@ -21272,7 +21272,7 @@ msgstr "Llenguatge de signes de Providencia" #. name for psa msgid "Awyu; Asue" -msgstr "" +msgstr "Awyu; Asue" #. name for psc msgid "Persian Sign Language" @@ -21328,7 +21328,7 @@ msgstr "Llenguatge de signes portuguès" #. name for pss msgid "Kaulong" -msgstr "" +msgstr "Kaulong" #. name for pst msgid "Pashto; Central" @@ -21376,11 +21376,11 @@ msgstr "Pìamatsina" #. name for ptt msgid "Enrekang" -msgstr "" +msgstr "Enrekang" #. name for ptu msgid "Bambam" -msgstr "" +msgstr "Bambam" #. name for ptv msgid "Port Vato" @@ -21916,7 +21916,7 @@ msgstr "Kayan; Rejang" #. name for reg msgid "Kara (Tanzania)" -msgstr "" +msgstr "Kara (Tanzània)" #. name for rei msgid "Reli" @@ -23648,7 +23648,7 @@ msgstr "Seeku" #. name for sot msgid "Sotho; Southern" -msgstr "sotho" +msgstr "Sotho; Meridional" #. name for sou msgid "Thai; Southern" @@ -23744,7 +23744,7 @@ msgstr "Sapuà" #. name for spx msgid "Picene; South" -msgstr "" +msgstr "Picene; Meridional" #. name for spy msgid "Sabaot" @@ -24300,7 +24300,7 @@ msgstr "Shixing" #. name for sxk msgid "Kalapuya; Southern" -msgstr "" +msgstr "Kalapuya; Yoncalla" #. name for sxl msgid "Selian" @@ -25392,7 +25392,7 @@ msgstr "Taliabu" #. name for tlw msgid "Wemale; South" -msgstr "" +msgstr "Wemale; Meridional" #. name for tlx msgid "Khehek" @@ -25660,7 +25660,7 @@ msgstr "Toposo" #. name for tor msgid "Banda; Togbo-Vara" -msgstr "" +msgstr "Banda; Togbo" #. name for tos msgid "Totonac; Highland" @@ -26232,7 +26232,7 @@ msgstr "Teun" #. name for tvk msgid "Ambrym; Southeast" -msgstr "" +msgstr "Ambrym; Meridional" #. name for tvl msgid "Tuvalu" @@ -26308,7 +26308,7 @@ msgstr "Tawara" #. name for twm msgid "Monpa; Tawang" -msgstr "" +msgstr "Moinba; Tawang" #. name for twn msgid "Twendi" @@ -26768,7 +26768,7 @@ msgstr "" #. name for una msgid "Watut; North" -msgstr "" +msgstr "Watut; Septentrional" #. name for und msgid "Undetermined" @@ -27460,35 +27460,35 @@ msgstr "Waiwai" #. name for wax msgid "Watam" -msgstr "" +msgstr "Watam" #. name for way msgid "Wayana" -msgstr "" +msgstr "Wayana" #. name for waz msgid "Wampur" -msgstr "" +msgstr "Wampur" #. name for wba msgid "Warao" -msgstr "" +msgstr "Warao" #. name for wbb msgid "Wabo" -msgstr "" +msgstr "Wabo" #. name for wbe msgid "Waritai" -msgstr "" +msgstr "Waritai" #. name for wbf msgid "Wara" -msgstr "" +msgstr "Wara (Burkina Faso)" #. name for wbh msgid "Wanda" -msgstr "" +msgstr "Wanda" #. name for wbi msgid "Vwanji" @@ -27500,39 +27500,39 @@ msgstr "" #. name for wbk msgid "Waigali" -msgstr "" +msgstr "Waigali" #. name for wbl msgid "Wakhi" -msgstr "" +msgstr "Wakhi" #. name for wbm msgid "Wa" -msgstr "" +msgstr "Wa" #. name for wbp msgid "Warlpiri" -msgstr "" +msgstr "Walpirí" #. name for wbq msgid "Waddar" -msgstr "" +msgstr "Waddar" #. name for wbr msgid "Wagdi" -msgstr "" +msgstr "Wagdi" #. name for wbt msgid "Wanman" -msgstr "" +msgstr "Wanman" #. name for wbv msgid "Wajarri" -msgstr "" +msgstr "Wajarri" #. name for wbw msgid "Woi" -msgstr "" +msgstr "Woi" #. name for wca msgid "Yanomámi" @@ -27544,23 +27544,23 @@ msgstr "Gbe; Waci" #. name for wdd msgid "Wandji" -msgstr "" +msgstr "Wandji" #. name for wdg msgid "Wadaginam" -msgstr "" +msgstr "Wadaginam" #. name for wdj msgid "Wadjiginy" -msgstr "" +msgstr "Wadjiginy" #. name for wdu msgid "Wadjigu" -msgstr "" +msgstr "Wadjigu" #. name for wea msgid "Wewaw" -msgstr "" +msgstr "Wewaw" #. name for wec msgid "Wè Western" @@ -27568,11 +27568,11 @@ msgstr "We; occidental" #. name for wed msgid "Wedau" -msgstr "" +msgstr "Wedau" #. name for weh msgid "Weh" -msgstr "" +msgstr "Weh" #. name for wei msgid "Kiunum" @@ -27584,15 +27584,15 @@ msgstr "Gbe; Weme" #. name for weo msgid "Wemale; North" -msgstr "" +msgstr "Wemale; Septentrional" #. name for wep msgid "Westphalien" -msgstr "" +msgstr "Alemany; Westfalià" #. name for wer msgid "Weri" -msgstr "" +msgstr "Weri" #. name for wes msgid "Pidgin; Cameroon" @@ -27604,11 +27604,11 @@ msgstr "" #. name for weu msgid "Welaung" -msgstr "" +msgstr "Welaung" #. name for wew msgid "Wejewa" -msgstr "" +msgstr "Wejewa" #. name for wfg msgid "Yafi" @@ -27616,11 +27616,11 @@ msgstr "" #. name for wga msgid "Wagaya" -msgstr "" +msgstr "Wagaya" #. name for wgb msgid "Wagawaga" -msgstr "" +msgstr "Wagawaga" #. name for wgg msgid "Wangganguru" @@ -27628,15 +27628,15 @@ msgstr "" #. name for wgi msgid "Wahgi" -msgstr "" +msgstr "Wahgi" #. name for wgo msgid "Waigeo" -msgstr "" +msgstr "Waigeo" #. name for wgy msgid "Warrgamay" -msgstr "" +msgstr "Warrgamay" #. name for wha msgid "Manusela" @@ -27644,7 +27644,7 @@ msgstr "" #. name for whg msgid "Wahgi; North" -msgstr "" +msgstr "Wahgi; Septentrional" #. name for whk msgid "Kenyah; Wahau" @@ -27660,23 +27660,23 @@ msgstr "Tusia; Meridional" #. name for wic msgid "Wichita" -msgstr "" +msgstr "Wichita" #. name for wie msgid "Wik-Epa" -msgstr "" +msgstr "Wik; Epa" #. name for wif msgid "Wik-Keyangan" -msgstr "" +msgstr "Wik; Keyangan" #. name for wig msgid "Wik-Ngathana" -msgstr "" +msgstr "Wik; Ngathana" #. name for wih msgid "Wik-Me'anha" -msgstr "" +msgstr "Wik; Meanha" #. name for wii msgid "Minidien" @@ -27684,19 +27684,19 @@ msgstr "" #. name for wij msgid "Wik-Iiyanh" -msgstr "" +msgstr "Wik; Liyanh" #. name for wik msgid "Wikalkan" -msgstr "" +msgstr "Wikalkan" #. name for wil msgid "Wilawila" -msgstr "" +msgstr "Ngarinyin; Wilawila" #. name for wim msgid "Wik-Mungkan" -msgstr "" +msgstr "Wik; Mungkan" #. name for win msgid "Ho-Chunk" @@ -27704,15 +27704,15 @@ msgstr "" #. name for wir msgid "Wiraféd" -msgstr "" +msgstr "Wirafed" #. name for wit msgid "Wintu" -msgstr "" +msgstr "Wintu" #. name for wiu msgid "Wiru" -msgstr "" +msgstr "Wiru" #. name for wiv msgid "Muduapa" @@ -27720,19 +27720,19 @@ msgstr "" #. name for wiw msgid "Wirangu" -msgstr "" +msgstr "Wirangu" #. name for wiy msgid "Wiyot" -msgstr "" +msgstr "Wiyot" #. name for wja msgid "Waja" -msgstr "" +msgstr "Waja" #. name for wji msgid "Warji" -msgstr "" +msgstr "Warji" #. name for wka msgid "Kw'adza" @@ -27744,7 +27744,7 @@ msgstr "" #. name for wkd msgid "Wakde" -msgstr "" +msgstr "Wakde" #. name for wkl msgid "Kalanadi" @@ -27756,11 +27756,11 @@ msgstr "" #. name for wkw msgid "Wakawaka" -msgstr "" +msgstr "Wakawaka" #. name for wla msgid "Walio" -msgstr "" +msgstr "Walio" #. name for wlc msgid "Comorian; Mwali" @@ -27768,7 +27768,7 @@ msgstr "" #. name for wle msgid "Wolane" -msgstr "" +msgstr "Gurage; Wolane" #. name for wlg msgid "Kunbarlang" @@ -27776,15 +27776,15 @@ msgstr "" #. name for wli msgid "Waioli" -msgstr "" +msgstr "Waioli" #. name for wlk msgid "Wailaki" -msgstr "" +msgstr "Wailaki" #. name for wll msgid "Wali (Sudan)" -msgstr "" +msgstr "Wali (Sudan)" #. name for wlm msgid "Welsh; Middle" @@ -27792,39 +27792,39 @@ msgstr "Gal·lès. mitjà" #. name for wln msgid "Walloon" -msgstr "" +msgstr "Francès; Való" #. name for wlo msgid "Wolio" -msgstr "" +msgstr "Wolio" #. name for wlr msgid "Wailapa" -msgstr "" +msgstr "Wailapa" #. name for wls msgid "Wallisian" -msgstr "" +msgstr "Wallisià" #. name for wlu msgid "Wuliwuli" -msgstr "" +msgstr "Wuliwuli" #. name for wlv msgid "Wichí Lhamtés Vejoz" -msgstr "" +msgstr "Wichí; Vejoz" #. name for wlw msgid "Walak" -msgstr "" +msgstr "Walak" #. name for wlx msgid "Wali (Ghana)" -msgstr "" +msgstr "Wali (Ghana)" #. name for wly msgid "Waling" -msgstr "" +msgstr "Waling" #. name for wma msgid "Mawa (Nigeria)" @@ -27832,11 +27832,11 @@ msgstr "" #. name for wmb msgid "Wambaya" -msgstr "" +msgstr "Wambaya" #. name for wmc msgid "Wamas" -msgstr "" +msgstr "Wamas" #. name for wmd msgid "Mamaindé" @@ -27844,11 +27844,11 @@ msgstr "" #. name for wme msgid "Wambule" -msgstr "" +msgstr "Wambule" #. name for wmh msgid "Waima'a" -msgstr "" +msgstr "Waima'a" #. name for wmi msgid "Wamin" @@ -27864,15 +27864,15 @@ msgstr "" #. name for wmo msgid "Wom (Papua New Guinea)" -msgstr "" +msgstr "Wom (Papua Nova Guinea)" #. name for wms msgid "Wambon" -msgstr "" +msgstr "Wambon" #. name for wmt msgid "Walmajarri" -msgstr "" +msgstr "Walmajarri" #. name for wmw msgid "Mwani" @@ -27884,23 +27884,23 @@ msgstr "" #. name for wnb msgid "Wanambre" -msgstr "" +msgstr "Wanambre" #. name for wnc msgid "Wantoat" -msgstr "" +msgstr "Wantoat" #. name for wnd msgid "Wandarang" -msgstr "" +msgstr "Wandarang" #. name for wne msgid "Waneci" -msgstr "" +msgstr "Waneci" #. name for wng msgid "Wanggom" -msgstr "" +msgstr "Wanggom" #. name for wni msgid "Comorian; Ndzwani" @@ -27908,19 +27908,19 @@ msgstr "" #. name for wnk msgid "Wanukaka" -msgstr "" +msgstr "Wanukaka" #. name for wnm msgid "Wanggamala" -msgstr "" +msgstr "Wanggamala" #. name for wno msgid "Wano" -msgstr "" +msgstr "Wano" #. name for wnp msgid "Wanap" -msgstr "" +msgstr "Wanap" #. name for wnu msgid "Usan" @@ -27936,23 +27936,23 @@ msgstr "We; septentrional" #. name for woc msgid "Wogeo" -msgstr "" +msgstr "Wogeo" #. name for wod msgid "Wolani" -msgstr "" +msgstr "Wolani" #. name for woe msgid "Woleaian" -msgstr "" +msgstr "Woleaia" #. name for wof msgid "Wolof; Gambian" -msgstr "" +msgstr "Wolof; Gambià" #. name for wog msgid "Wogamusin" -msgstr "" +msgstr "Wogamusin" #. name for woi msgid "Kamang" @@ -27964,15 +27964,15 @@ msgstr "" #. name for wol msgid "Wolof" -msgstr "wòlof" +msgstr "Wolof" #. name for wom msgid "Wom (Nigeria)" -msgstr "" +msgstr "Wom (Nigèria)" #. name for won msgid "Wongo" -msgstr "" +msgstr "Wongo" #. name for woo msgid "Manombai" @@ -27980,7 +27980,7 @@ msgstr "" #. name for wor msgid "Woria" -msgstr "" +msgstr "Woria" #. name for wos msgid "Hanga Hundi" @@ -27988,11 +27988,11 @@ msgstr "" #. name for wow msgid "Wawonii" -msgstr "" +msgstr "Wawonii" #. name for woy msgid "Weyto" -msgstr "" +msgstr "Weyto" #. name for wpc msgid "Maco" @@ -28000,59 +28000,59 @@ msgstr "" #. name for wra msgid "Warapu" -msgstr "" +msgstr "Warapu" #. name for wrb msgid "Warluwara" -msgstr "" +msgstr "Warluwara" #. name for wrd msgid "Warduji" -msgstr "" +msgstr "Warduji" #. name for wrg msgid "Warungu" -msgstr "" +msgstr "Warungu" #. name for wrh msgid "Wiradhuri" -msgstr "" +msgstr "Wiradhuri" #. name for wri msgid "Wariyangga" -msgstr "" +msgstr "Wariyangga" #. name for wrl msgid "Warlmanpa" -msgstr "" +msgstr "Warlmanpa" #. name for wrm msgid "Warumungu" -msgstr "" +msgstr "Warumungu" #. name for wrn msgid "Warnang" -msgstr "" +msgstr "Warnang" #. name for wrp msgid "Waropen" -msgstr "" +msgstr "Waropen" #. name for wrr msgid "Wardaman" -msgstr "" +msgstr "Wardaman" #. name for wrs msgid "Waris" -msgstr "" +msgstr "Waris" #. name for wru msgid "Waru" -msgstr "" +msgstr "Waru" #. name for wrv msgid "Waruna" -msgstr "" +msgstr "Waruna" #. name for wrw msgid "Gugu Warra" @@ -28060,7 +28060,7 @@ msgstr "" #. name for wrx msgid "Wae Rana" -msgstr "" +msgstr "Waerana" #. name for wry msgid "Merwari" @@ -28068,19 +28068,19 @@ msgstr "" #. name for wrz msgid "Waray (Australia)" -msgstr "" +msgstr "Waray" #. name for wsa msgid "Warembori" -msgstr "" +msgstr "Warembori" #. name for wsi msgid "Wusi" -msgstr "" +msgstr "Wusi" #. name for wsk msgid "Waskia" -msgstr "" +msgstr "Waskia" #. name for wsr msgid "Owenia" @@ -28088,19 +28088,19 @@ msgstr "" #. name for wss msgid "Wasa" -msgstr "" +msgstr "Wasa" #. name for wsu msgid "Wasu" -msgstr "" +msgstr "Wassu" #. name for wsv msgid "Wotapuri-Katarqalai" -msgstr "" +msgstr "Wotapuri-Katarqalai" #. name for wtf msgid "Watiwa" -msgstr "" +msgstr "Dumpu" #. name for wti msgid "Berta" @@ -28108,7 +28108,7 @@ msgstr "" #. name for wtk msgid "Watakataui" -msgstr "" +msgstr "Watakataui" #. name for wtm msgid "Mewati" @@ -28116,23 +28116,23 @@ msgstr "" #. name for wtw msgid "Wotu" -msgstr "" +msgstr "Wotu" #. name for wua msgid "Wikngenchera" -msgstr "" +msgstr "Wik; Ngenchera" #. name for wub msgid "Wunambal" -msgstr "" +msgstr "Wunambal" #. name for wud msgid "Wudu" -msgstr "" +msgstr "Wudu" #. name for wuh msgid "Wutunhua" -msgstr "" +msgstr "Wutunhua" #. name for wul msgid "Silimo" @@ -28140,7 +28140,7 @@ msgstr "" #. name for wum msgid "Wumbvu" -msgstr "" +msgstr "Wumbvu" #. name for wun msgid "Bungu" @@ -28148,11 +28148,11 @@ msgstr "" #. name for wur msgid "Wurrugu" -msgstr "" +msgstr "Wurrugu" #. name for wut msgid "Wutung" -msgstr "" +msgstr "Wutung" #. name for wuu msgid "Chinese; Wu" @@ -28160,43 +28160,43 @@ msgstr "Xinès; Wu" #. name for wuv msgid "Wuvulu-Aua" -msgstr "" +msgstr "Wuvulu-Aua" #. name for wux msgid "Wulna" -msgstr "" +msgstr "Wulna" #. name for wuy msgid "Wauyai" -msgstr "" +msgstr "Wauyai" #. name for wwa msgid "Waama" -msgstr "" +msgstr "Waama" #. name for wwo msgid "Wetamut" -msgstr "" +msgstr "Wetamut" #. name for wwr msgid "Warrwa" -msgstr "" +msgstr "Warrwa" #. name for www msgid "Wawa" -msgstr "" +msgstr "Wawa" #. name for wxa msgid "Waxianghua" -msgstr "" +msgstr "Waxianghua" #. name for wya msgid "Wyandot" -msgstr "" +msgstr "Wyandot" #. name for wyb msgid "Wangaaybuwan-Ngiyambaa" -msgstr "" +msgstr "Wangaaybuwan-Nyiya" #. name for wym msgid "Wymysorys" @@ -28204,7 +28204,7 @@ msgstr "" #. name for wyr msgid "Wayoró" -msgstr "" +msgstr "Wayoró" #. name for wyy msgid "Fijian; Western" @@ -28244,11 +28244,11 @@ msgstr "" #. name for xam msgid "/Xam" -msgstr "" +msgstr "Xam" #. name for xan msgid "Xamtanga" -msgstr "" +msgstr "Xamtanga" #. name for xao msgid "Khao" @@ -28280,7 +28280,7 @@ msgstr "" #. name for xav msgid "Xavánte" -msgstr "" +msgstr "Xavante" #. name for xaw msgid "Kawaiisu" @@ -28372,7 +28372,7 @@ msgstr "" #. name for xct msgid "Tibetan; Classical" -msgstr "" +msgstr "Tibetà clàssic" #. name for xcu msgid "Curonian" @@ -28428,7 +28428,7 @@ msgstr "" #. name for xer msgid "Xerénte" -msgstr "" +msgstr "Xerente" #. name for xes msgid "Kesawai" @@ -28436,7 +28436,7 @@ msgstr "" #. name for xet msgid "Xetá" -msgstr "" +msgstr "Xetà" #. name for xeu msgid "Keoru-Ahia" @@ -28500,7 +28500,7 @@ msgstr "" #. name for xia msgid "Xiandao" -msgstr "" +msgstr "Xiandao" #. name for xib msgid "Iberian" @@ -28508,7 +28508,7 @@ msgstr "" #. name for xii msgid "Xiri" -msgstr "" +msgstr "Griqua" #. name for xil msgid "Illyrian" @@ -28516,15 +28516,15 @@ msgstr "" #. name for xin msgid "Xinca" -msgstr "" +msgstr "Xinca" #. name for xip msgid "Xipináwa" -msgstr "" +msgstr "Xipinawa" #. name for xir msgid "Xiriâna" -msgstr "" +msgstr "Xiriana" #. name for xiv msgid "Indus Valley Language" @@ -28532,7 +28532,7 @@ msgstr "" #. name for xiy msgid "Xipaya" -msgstr "" +msgstr "Xipaia" #. name for xka msgid "Kalkoti" @@ -28600,7 +28600,7 @@ msgstr "" #. name for xkr msgid "Xakriabá" -msgstr "" +msgstr "Xakriabà" #. name for xks msgid "Kumbewaha" @@ -28840,7 +28840,7 @@ msgstr "" #. name for xok msgid "Xokleng" -msgstr "" +msgstr "Xokleng" #. name for xom msgid "Komo (Sudan)" @@ -28852,7 +28852,7 @@ msgstr "" #. name for xoo msgid "Xukurú" -msgstr "" +msgstr "Xukurú" #. name for xop msgid "Kopar" @@ -29252,15 +29252,15 @@ msgstr "" #. name for yaa msgid "Yaminahua" -msgstr "" +msgstr "Yaminahua" #. name for yab msgid "Yuhup" -msgstr "" +msgstr "Yuhup" #. name for yac msgid "Yali; Pass Valley" -msgstr "" +msgstr "Yali; Pass Valley" #. name for yad msgid "Yagua" @@ -29272,35 +29272,35 @@ msgstr "" #. name for yaf msgid "Yaka (Democratic Republic of Congo)" -msgstr "" +msgstr "Yaka (República Democràtica del Congo)" #. name for yag msgid "Yámana" -msgstr "" +msgstr "Yamana" #. name for yah msgid "Yazgulyam" -msgstr "" +msgstr "Yazgulyam" #. name for yai msgid "Yagnobi" -msgstr "" +msgstr "Yagnobi" #. name for yaj msgid "Banda-Yangere" -msgstr "" +msgstr "Banda; Yangere" #. name for yak msgid "Yakama" -msgstr "" +msgstr "Yakima" #. name for yal msgid "Yalunka" -msgstr "" +msgstr "Yalunka" #. name for yam msgid "Yamba" -msgstr "" +msgstr "Yamba" #. name for yan msgid "Mayangna" @@ -29308,19 +29308,19 @@ msgstr "" #. name for yao msgid "Yao" -msgstr "" +msgstr "Yao" #. name for yap msgid "Yapese" -msgstr "" +msgstr "Yapès" #. name for yaq msgid "Yaqui" -msgstr "" +msgstr "Yaqui" #. name for yar msgid "Yabarana" -msgstr "" +msgstr "Yabarana" #. name for yas msgid "Nugunu (Cameroon)" @@ -29328,23 +29328,23 @@ msgstr "" #. name for yat msgid "Yambeta" -msgstr "" +msgstr "Yambeta" #. name for yau msgid "Yuwana" -msgstr "" +msgstr "Yuwana" #. name for yav msgid "Yangben" -msgstr "" +msgstr "Yangben" #. name for yaw msgid "Yawalapití" -msgstr "" +msgstr "Yawalapiti" #. name for yax msgid "Yauma" -msgstr "" +msgstr "Yauma" #. name for yay msgid "Agwagwune" @@ -29356,27 +29356,27 @@ msgstr "" #. name for yba msgid "Yala" -msgstr "" +msgstr "Yala" #. name for ybb msgid "Yemba" -msgstr "" +msgstr "Yemba" #. name for ybd msgid "Yangbye" -msgstr "" +msgstr "Yangbye" #. name for ybe msgid "Yugur; West" -msgstr "" +msgstr "Yugur Occidental" #. name for ybh msgid "Yakha" -msgstr "" +msgstr "Yakha" #. name for ybi msgid "Yamphu" -msgstr "" +msgstr "Yamphu" #. name for ybj msgid "Hasha" @@ -29388,27 +29388,27 @@ msgstr "" #. name for ybl msgid "Yukuben" -msgstr "" +msgstr "Yukuben" #. name for ybm msgid "Yaben" -msgstr "" +msgstr "Yaben" #. name for ybn msgid "Yabaâna" -msgstr "" +msgstr "Yabaana" #. name for ybo msgid "Yabong" -msgstr "" +msgstr "Yabong" #. name for ybx msgid "Yawiyo" -msgstr "" +msgstr "Yawiyo" #. name for yby msgid "Yaweyuha" -msgstr "" +msgstr "Yaweyuha" #. name for ych msgid "Chesu" @@ -29420,7 +29420,7 @@ msgstr "" #. name for ycn msgid "Yucuna" -msgstr "" +msgstr "Yucuna" #. name for ycp msgid "Chepya" @@ -29436,11 +29436,11 @@ msgstr "" #. name for ydg msgid "Yidgha" -msgstr "" +msgstr "Yidgha" #. name for ydk msgid "Yoidik" -msgstr "" +msgstr "Yoidik" #. name for yds msgid "Yiddish Sign Language" @@ -29452,27 +29452,27 @@ msgstr "" #. name for yec msgid "Yeniche" -msgstr "" +msgstr "Ienitxe" #. name for yee msgid "Yimas" -msgstr "" +msgstr "Yimas" #. name for yei msgid "Yeni" -msgstr "" +msgstr "Yeni" #. name for yej msgid "Yevanic" -msgstr "" +msgstr "Yevanic" #. name for yel msgid "Yela" -msgstr "" +msgstr "Yela" #. name for yen msgid "Yendang" -msgstr "" +msgstr "Yendang" #. name for yer msgid "Tarok" @@ -29480,23 +29480,23 @@ msgstr "" #. name for yes msgid "Yeskwa" -msgstr "" +msgstr "Yeskwa" #. name for yet msgid "Yetfa" -msgstr "" +msgstr "Yetfa" #. name for yeu msgid "Yerukula" -msgstr "" +msgstr "Yerukula" #. name for yev msgid "Yapunda" -msgstr "" +msgstr "Yapunda" #. name for yey msgid "Yeyi" -msgstr "" +msgstr "Yeyi" #. name for ygl msgid "Yangum Gel" @@ -29504,7 +29504,7 @@ msgstr "" #. name for ygm msgid "Yagomi" -msgstr "" +msgstr "Yagomi" #. name for ygp msgid "Gepo" @@ -29512,11 +29512,11 @@ msgstr "" #. name for ygr msgid "Yagaria" -msgstr "" +msgstr "Yagaria" #. name for ygw msgid "Yagwoia" -msgstr "" +msgstr "Yagwoia" #. name for yha msgid "Buyang; Baha" @@ -29532,7 +29532,7 @@ msgstr "" #. name for yia msgid "Yinggarda" -msgstr "" +msgstr "Yinggarda" #. name for yid msgid "Yiddish" @@ -29552,11 +29552,11 @@ msgstr "Jiddish; occidental" #. name for yii msgid "Yidiny" -msgstr "" +msgstr "Yidiny" #. name for yij msgid "Yindjibarndi" -msgstr "" +msgstr "Yindjbarndi" #. name for yik msgid "Lalo; Dongshanba" @@ -29564,7 +29564,7 @@ msgstr "" #. name for yil msgid "Yindjilandji" -msgstr "" +msgstr "Yindjilandji" #. name for yim msgid "Naga; Yimchungru" @@ -29572,7 +29572,7 @@ msgstr "Naga; Yimchungru" #. name for yin msgid "Yinchia" -msgstr "" +msgstr "Yinchia" #. name for yip msgid "Pholo" @@ -29584,11 +29584,11 @@ msgstr "" #. name for yir msgid "Awyu; North" -msgstr "" +msgstr "Awyu; Septentrional" #. name for yis msgid "Yis" -msgstr "" +msgstr "Yis" #. name for yit msgid "Lalu; Eastern" @@ -29608,7 +29608,7 @@ msgstr "Yi; Axi" #. name for yiy msgid "Yir Yoront" -msgstr "" +msgstr "Yir Yoront" #. name for yiz msgid "Azhe" @@ -29616,19 +29616,19 @@ msgstr "" #. name for yka msgid "Yakan" -msgstr "" +msgstr "Yakan" #. name for ykg msgid "Yukaghir; Northern" -msgstr "" +msgstr "Iukaguir; Septentrional" #. name for yki msgid "Yoke" -msgstr "" +msgstr "Yoke" #. name for ykk msgid "Yakaikeke" -msgstr "" +msgstr "Yakaikeke" #. name for ykl msgid "Khlula" @@ -29640,11 +29640,11 @@ msgstr "" #. name for yko msgid "Yasa" -msgstr "" +msgstr "Yasa" #. name for ykr msgid "Yekora" -msgstr "" +msgstr "Yekora" #. name for ykt msgid "Kathu" @@ -29652,31 +29652,31 @@ msgstr "" #. name for yky msgid "Yakoma" -msgstr "" +msgstr "Yakoma" #. name for yla msgid "Yaul" -msgstr "" +msgstr "Yaul" #. name for ylb msgid "Yaleba" -msgstr "" +msgstr "Tawala; Yaleba" #. name for yle msgid "Yele" -msgstr "" +msgstr "Yele" #. name for ylg msgid "Yelogu" -msgstr "" +msgstr "Yelogu" #. name for yli msgid "Yali; Angguruk" -msgstr "" +msgstr "Yali; Angguruk" #. name for yll msgid "Yil" -msgstr "" +msgstr "Yil" #. name for ylm msgid "Limi" @@ -29692,7 +29692,7 @@ msgstr "Yi; Naluo" #. name for ylr msgid "Yalarnnga" -msgstr "" +msgstr "Yalarnga" #. name for ylu msgid "Aribwaung" @@ -29704,11 +29704,11 @@ msgstr "" #. name for yma msgid "Yamphe" -msgstr "" +msgstr "Yamphe" #. name for ymb msgid "Yambes" -msgstr "" +msgstr "Yambes" #. name for ymc msgid "Muji; Southern" @@ -29720,11 +29720,11 @@ msgstr "" #. name for yme msgid "Yameo" -msgstr "" +msgstr "Yameo" #. name for ymg msgid "Yamongeri" -msgstr "" +msgstr "Yamongeri" #. name for ymh msgid "Mili" @@ -29748,7 +29748,7 @@ msgstr "" #. name for ymn msgid "Yamna" -msgstr "" +msgstr "Yamna" #. name for ymo msgid "Yangum Mon" @@ -29756,7 +29756,7 @@ msgstr "" #. name for ymp msgid "Yamap" -msgstr "" +msgstr "Yamap" #. name for ymq msgid "Muji; Qila" @@ -29788,7 +29788,7 @@ msgstr "" #. name for ynd msgid "Yandruwandha" -msgstr "" +msgstr "Yandruwandha" #. name for yne msgid "Lang'e" @@ -29796,11 +29796,11 @@ msgstr "" #. name for yng msgid "Yango" -msgstr "" +msgstr "Yango" #. name for ynh msgid "Yangho" -msgstr "" +msgstr "Yangho" #. name for ynk msgid "Yupik; Naukan" @@ -29808,47 +29808,47 @@ msgstr "Iupik; Naukan" #. name for ynl msgid "Yangulam" -msgstr "" +msgstr "Yangulam" #. name for ynn msgid "Yana" -msgstr "" +msgstr "Yana" #. name for yno msgid "Yong" -msgstr "" +msgstr "Yong" #. name for yns msgid "Yansi" -msgstr "" +msgstr "Yansi" #. name for ynu msgid "Yahuna" -msgstr "" +msgstr "Yauna" #. name for yob msgid "Yoba" -msgstr "" +msgstr "Yoba" #. name for yog msgid "Yogad" -msgstr "" +msgstr "Yogad" #. name for yoi msgid "Yonaguni" -msgstr "" +msgstr "Yonaguni" #. name for yok msgid "Yokuts" -msgstr "" +msgstr "Yokuts" #. name for yol msgid "Yola" -msgstr "" +msgstr "Yola" #. name for yom msgid "Yombe" -msgstr "" +msgstr "Yombe" #. name for yon msgid "Yongkom" @@ -29860,15 +29860,15 @@ msgstr "ioruba" #. name for yos msgid "Yos" -msgstr "" +msgstr "Yos" #. name for yox msgid "Yoron" -msgstr "" +msgstr "Yoron" #. name for yoy msgid "Yoy" -msgstr "" +msgstr "Yoy" #. name for ypa msgid "Phala" @@ -29908,19 +29908,19 @@ msgstr "" #. name for yra msgid "Yerakai" -msgstr "" +msgstr "Yerakai" #. name for yrb msgid "Yareba" -msgstr "" +msgstr "Yareba" #. name for yre msgid "Yaouré" -msgstr "" +msgstr "Yaouré" #. name for yri msgid "Yarí" -msgstr "" +msgstr "Yarí" #. name for yrk msgid "Nenets" @@ -29932,19 +29932,19 @@ msgstr "" #. name for yrn msgid "Yerong" -msgstr "" +msgstr "Yerong" #. name for yrs msgid "Yarsun" -msgstr "" +msgstr "Yarsun" #. name for yrw msgid "Yarawata" -msgstr "" +msgstr "Yarawata" #. name for ysc msgid "Yassic" -msgstr "" +msgstr "Yassic" #. name for ysd msgid "Samatao" @@ -29972,7 +29972,7 @@ msgstr "Iupik; Sirenik" #. name for yss msgid "Yessan-Mayo" -msgstr "" +msgstr "Yessan-Mayo" #. name for ysy msgid "Sanie" @@ -30000,11 +30000,11 @@ msgstr "" #. name for yub msgid "Yugambal" -msgstr "" +msgstr "Yugambal" #. name for yuc msgid "Yuchi" -msgstr "" +msgstr "Yuchi" #. name for yud msgid "Arabic; Judeo-Tripolitanian" @@ -30016,27 +30016,27 @@ msgstr "Xinès; Yue" #. name for yuf msgid "Havasupai-Walapai-Yavapai" -msgstr "" +msgstr "Havasupai-Walapai-Yavapai" #. name for yug msgid "Yug" -msgstr "" +msgstr "Yug" #. name for yui msgid "Yurutí" -msgstr "" +msgstr "Yuruti" #. name for yuj msgid "Karkar-Yuri" -msgstr "" +msgstr "Karkar-Yuri" #. name for yuk msgid "Yuki" -msgstr "" +msgstr "Yuki" #. name for yul msgid "Yulu" -msgstr "" +msgstr "Yulu" #. name for yum msgid "Quechan" @@ -30048,47 +30048,47 @@ msgstr "" #. name for yup msgid "Yukpa" -msgstr "" +msgstr "Yukpa" #. name for yuq msgid "Yuqui" -msgstr "" +msgstr "Yuqui" #. name for yur msgid "Yurok" -msgstr "" +msgstr "Yurok" #. name for yut msgid "Yopno" -msgstr "" +msgstr "Yupna" #. name for yuu msgid "Yugh" -msgstr "" +msgstr "Yug" #. name for yuw msgid "Yau (Morobe Province)" -msgstr "" +msgstr "Yau (Província de Morobe)" #. name for yux msgid "Yukaghir; Southern" -msgstr "" +msgstr "Iukaguir; Meridional" #. name for yuy msgid "Yugur; East" -msgstr "" +msgstr "Yugur Oriental" #. name for yuz msgid "Yuracare" -msgstr "" +msgstr "Iurakare" #. name for yva msgid "Yawa" -msgstr "" +msgstr "Yawa" #. name for yvt msgid "Yavitero" -msgstr "" +msgstr "Yavitero" #. name for ywa msgid "Kalou" @@ -30100,7 +30100,7 @@ msgstr "" #. name for ywn msgid "Yawanawa" -msgstr "" +msgstr "Yawanawà" #. name for ywq msgid "Yi; Wuding-Luquan" @@ -30108,7 +30108,7 @@ msgstr "Yi; Wuding-luqua" #. name for ywr msgid "Yawuru" -msgstr "" +msgstr "Yawuru" #. name for ywt msgid "Lalo; Xishanba" @@ -30120,11 +30120,11 @@ msgstr "" #. name for yww msgid "Yawarawarga" -msgstr "" +msgstr "Yawarawarga" #. name for yyu msgid "Yau (Sandaun Province)" -msgstr "" +msgstr "Yau (Província de Sandaun)" #. name for yyz msgid "Ayizi" @@ -30140,103 +30140,103 @@ msgstr "" #. name for zaa msgid "Zapotec; Sierra de Juárez" -msgstr "" +msgstr "Zapotec; Sierra de Juàrez" #. name for zab msgid "Zapotec; San Juan Guelavía" -msgstr "" +msgstr "Zapotec; San Juan Guelavia" #. name for zac msgid "Zapotec; Ocotlán" -msgstr "" +msgstr "Zapotec; Ocotlan" #. name for zad msgid "Zapotec; Cajonos" -msgstr "" +msgstr "Zapotec; Cajonos" #. name for zae msgid "Zapotec; Yareni" -msgstr "" +msgstr "Zapotec; Yaneri" #. name for zaf msgid "Zapotec; Ayoquesco" -msgstr "" +msgstr "Zapotec; Ayoquesc" #. name for zag msgid "Zaghawa" -msgstr "" +msgstr "Zaghawa" #. name for zah msgid "Zangwal" -msgstr "" +msgstr "Zangwal" #. name for zai msgid "Zapotec; Isthmus" -msgstr "" +msgstr "Zapotec; Istme" #. name for zaj msgid "Zaramo" -msgstr "" +msgstr "Zaramo" #. name for zak msgid "Zanaki" -msgstr "" +msgstr "Zanaki" #. name for zal msgid "Zauzou" -msgstr "" +msgstr "Zauzou" #. name for zam msgid "Zapotec; Miahuatlán" -msgstr "" +msgstr "Zapotec; Miahuatlan" #. name for zao msgid "Zapotec; Ozolotepec" -msgstr "" +msgstr "Zapotec; Ozolotepec" #. name for zap msgid "Zapotec" -msgstr "" +msgstr "Zapotec" #. name for zaq msgid "Zapotec; Aloápam" -msgstr "" +msgstr "Zapotec; Aloapam" #. name for zar msgid "Zapotec; Rincón" -msgstr "" +msgstr "Zapotec; Rincon" #. name for zas msgid "Zapotec; Santo Domingo Albarradas" -msgstr "" +msgstr "Zapotec; Santo Domingo Albarradas" #. name for zat msgid "Zapotec; Tabaa" -msgstr "" +msgstr "Zapotec; Tabaa" #. name for zau msgid "Zangskari" -msgstr "" +msgstr "Zangskari" #. name for zav msgid "Zapotec; Yatzachi" -msgstr "" +msgstr "Zapotec; Yatzachi" #. name for zaw msgid "Zapotec; Mitla" -msgstr "" +msgstr "Zapotec; Mitla" #. name for zax msgid "Zapotec; Xadani" -msgstr "" +msgstr "Zapotec; Xadani" #. name for zay msgid "Zayse-Zergulla" -msgstr "" +msgstr "Zayse-Zergulla" #. name for zaz msgid "Zari" -msgstr "" +msgstr "Zari" #. name for zbc msgid "Berawan; Central" @@ -30260,11 +30260,11 @@ msgstr "" #. name for zca msgid "Zapotec; Coatecas Altas" -msgstr "" +msgstr "Zapotec; Coatecas Altas" #. name for zch msgid "Zhuang; Central Hongshuihe" -msgstr "" +msgstr "Zhuang; Hongshuihe" #. name for zdj msgid "Comorian; Ngazidja" @@ -30272,11 +30272,11 @@ msgstr "" #. name for zea msgid "Zeeuws" -msgstr "" +msgstr "Neerlandès; Zeeuws" #. name for zeg msgid "Zenag" -msgstr "" +msgstr "Zenag" #. name for zeh msgid "Zhuang; Eastern Hongshuihe" @@ -30292,7 +30292,7 @@ msgstr "" #. name for zgb msgid "Zhuang; Guibei" -msgstr "" +msgstr "Zhuang; Guibei" #. name for zgm msgid "Zhuang; Minz" @@ -30300,7 +30300,7 @@ msgstr "" #. name for zgn msgid "Zhuang; Guibian" -msgstr "" +msgstr "Zhuang; Guibià" #. name for zgr msgid "Magori" @@ -30308,19 +30308,19 @@ msgstr "" #. name for zha msgid "Zhuang" -msgstr "" +msgstr "Chuang" #. name for zhb msgid "Zhaba" -msgstr "" +msgstr "Zhaba" #. name for zhd msgid "Zhuang; Dai" -msgstr "" +msgstr "Zhuang; Wenma" #. name for zhi msgid "Zhire" -msgstr "" +msgstr "Zhire" #. name for zhn msgid "Zhuang; Nong" @@ -30332,11 +30332,11 @@ msgstr "Xinès" #. name for zhw msgid "Zhoa" -msgstr "" +msgstr "Zhoa" #. name for zia msgid "Zia" -msgstr "" +msgstr "Zia" #. name for zib msgid "Zimbabwe Sign Language" @@ -30344,7 +30344,7 @@ msgstr "Llenguatge de signes de Zimbawe" #. name for zik msgid "Zimakani" -msgstr "" +msgstr "Zimakani" #. name for zil msgid "Zialo" @@ -30356,19 +30356,19 @@ msgstr "" #. name for zin msgid "Zinza" -msgstr "" +msgstr "Zinza" #. name for zir msgid "Ziriya" -msgstr "" +msgstr "Ziriya" #. name for ziw msgid "Zigula" -msgstr "" +msgstr "Zigula" #. name for ziz msgid "Zizilivakan" -msgstr "" +msgstr "Zizilivakan" #. name for zka msgid "Kaimbulawa" @@ -30400,7 +30400,7 @@ msgstr "" #. name for zkr msgid "Zakhring" -msgstr "" +msgstr "Zakhring" #. name for zkt msgid "Kitan" @@ -30420,7 +30420,7 @@ msgstr "" #. name for zlj msgid "Zhuang; Liujiang" -msgstr "" +msgstr "Zhuang; Liujiang" #. name for zlm msgid "Malay (individual language)" @@ -30428,7 +30428,7 @@ msgstr "Malai (llengua individual)" #. name for zln msgid "Zhuang; Lianshan" -msgstr "" +msgstr "Zhuang; Lianshan" #. name for zlq msgid "Zhuang; Liuqian" @@ -30440,7 +30440,7 @@ msgstr "Manda (Austràlia)" #. name for zmb msgid "Zimba" -msgstr "" +msgstr "Zimba" #. name for zmc msgid "Margany" @@ -30540,7 +30540,7 @@ msgstr "" #. name for zna msgid "Zan Gula" -msgstr "" +msgstr "Zan Gula" #. name for zne msgid "Zande (individual language)" @@ -30560,143 +30560,143 @@ msgstr "" #. name for zoc msgid "Zoque; Copainalá" -msgstr "" +msgstr "Soque; Copainalà" #. name for zoh msgid "Zoque; Chimalapa" -msgstr "" +msgstr "Soque; Chimalapa" #. name for zom msgid "Zou" -msgstr "" +msgstr "Zome" #. name for zoo msgid "Zapotec; Asunción Mixtepec" -msgstr "" +msgstr "Zapotec; Asunción Mixtepec" #. name for zoq msgid "Zoque; Tabasco" -msgstr "" +msgstr "Soque; Tabasco" #. name for zor msgid "Zoque; Rayón" -msgstr "" +msgstr "Soque; Rayon" #. name for zos msgid "Zoque; Francisco León" -msgstr "" +msgstr "Soque; Francisco Leon" #. name for zpa msgid "Zapotec; Lachiguiri" -msgstr "" +msgstr "Zapotec; Lachiguiri" #. name for zpb msgid "Zapotec; Yautepec" -msgstr "" +msgstr "Zapotec; Yautepec" #. name for zpc msgid "Zapotec; Choapan" -msgstr "" +msgstr "Zapotec; Choapan" #. name for zpd msgid "Zapotec; Southeastern Ixtlán" -msgstr "" +msgstr "Zapotec; Ixtlan sudoriental" #. name for zpe msgid "Zapotec; Petapa" -msgstr "" +msgstr "Zapotec; Petapa" #. name for zpf msgid "Zapotec; San Pedro Quiatoni" -msgstr "" +msgstr "Zapotec; San Pedro Quiatoni" #. name for zpg msgid "Zapotec; Guevea De Humboldt" -msgstr "" +msgstr "Zapotec; Guevea De Humboldt" #. name for zph msgid "Zapotec; Totomachapan" -msgstr "" +msgstr "Zapotec; Totomachapan" #. name for zpi msgid "Zapotec; Santa María Quiegolani" -msgstr "" +msgstr "Zapotec; Santa Maria Quiegolani" #. name for zpj msgid "Zapotec; Quiavicuzas" -msgstr "" +msgstr "Zapotec; Quiavicuzas" #. name for zpk msgid "Zapotec; Tlacolulita" -msgstr "" +msgstr "Zapotec; Tlacolulita" #. name for zpl msgid "Zapotec; Lachixío" -msgstr "" +msgstr "Zapotec; Lachixío" #. name for zpm msgid "Zapotec; Mixtepec" -msgstr "" +msgstr "Zapotec; Mixtepec" #. name for zpn msgid "Zapotec; Santa Inés Yatzechi" -msgstr "" +msgstr "Zapotec; Santa Inés Yatzechi" #. name for zpo msgid "Zapotec; Amatlán" -msgstr "" +msgstr "Zapotec; Amatlan" #. name for zpp msgid "Zapotec; El Alto" -msgstr "" +msgstr "Zapotec; El Alto" #. name for zpq msgid "Zapotec; Zoogocho" -msgstr "" +msgstr "Zapotec; Zoogocho" #. name for zpr msgid "Zapotec; Santiago Xanica" -msgstr "" +msgstr "Zapotec; Santiago Xanica" #. name for zps msgid "Zapotec; Coatlán" -msgstr "" +msgstr "Zapotec; Coatlan" #. name for zpt msgid "Zapotec; San Vicente Coatlán" -msgstr "" +msgstr "Zapotec; San Vicente Coatlan" #. name for zpu msgid "Zapotec; Yalálag" -msgstr "" +msgstr "Zapotec; Yalalag" #. name for zpv msgid "Zapotec; Chichicapan" -msgstr "" +msgstr "Zapotec; Chichicapan" #. name for zpw msgid "Zapotec; Zaniza" -msgstr "" +msgstr "Zapotec; Zaniza" #. name for zpx msgid "Zapotec; San Baltazar Loxicha" -msgstr "" +msgstr "Zapotec; San Baltazar Loxicha" #. name for zpy msgid "Zapotec; Mazaltepec" -msgstr "" +msgstr "Zapotec; Mazaltepec" #. name for zpz msgid "Zapotec; Texmelucan" -msgstr "" +msgstr "Zapotec; Texmelucan" #. name for zqe msgid "Zhuang; Qiubei" -msgstr "" +msgstr "Zhuang; Qiubei" #. name for zra msgid "Kara (Korea)" -msgstr "" +msgstr "Kara (Corea)" #. name for zrg msgid "Mirgan" @@ -30704,15 +30704,15 @@ msgstr "" #. name for zrn msgid "Zerenkel" -msgstr "" +msgstr "Zirenkel" #. name for zro msgid "Záparo" -msgstr "" +msgstr "Záparo" #. name for zrp msgid "Zarphatic" -msgstr "" +msgstr "Zarphatic" #. name for zrs msgid "Mairasi" @@ -30736,7 +30736,7 @@ msgstr "Malai; estàndard" #. name for zsr msgid "Zapotec; Southern Rincon" -msgstr "" +msgstr "Zapotec; Rincon meridional" #. name for zsu msgid "Sukurum" @@ -30744,55 +30744,55 @@ msgstr "" #. name for zte msgid "Zapotec; Elotepec" -msgstr "" +msgstr "Zapotec; Elotepec" #. name for ztg msgid "Zapotec; Xanaguía" -msgstr "" +msgstr "Zapotec; Xanaguia" #. name for ztl msgid "Zapotec; Lapaguía-Guivini" -msgstr "" +msgstr "Zapotec; Santiago Lapaguia" #. name for ztm msgid "Zapotec; San Agustín Mixtepec" -msgstr "" +msgstr "Zapotec; San Agustin Mixtepec" #. name for ztn msgid "Zapotec; Santa Catarina Albarradas" -msgstr "" +msgstr "Zapotec; Santa Catarina Albarradas" #. name for ztp msgid "Zapotec; Loxicha" -msgstr "" +msgstr "Zapotec; Loxicha" #. name for ztq msgid "Zapotec; Quioquitani-Quierí" -msgstr "" +msgstr "Zapotec; Quioquitani-Quierí" #. name for zts msgid "Zapotec; Tilquiapan" -msgstr "" +msgstr "Zapotec; Tilquiapan" #. name for ztt msgid "Zapotec; Tejalapan" -msgstr "" +msgstr "Zapotec; Tejalapan" #. name for ztu msgid "Zapotec; Güilá" -msgstr "" +msgstr "Zapotec; Güilá" #. name for ztx msgid "Zapotec; Zaachila" -msgstr "" +msgstr "Zapotec; Zaachila" #. name for zty msgid "Zapotec; Yatee" -msgstr "" +msgstr "Zapotec; Yatee" #. name for zua msgid "Zeem" -msgstr "" +msgstr "Zeem" #. name for zuh msgid "Tokano" @@ -30808,23 +30808,23 @@ msgstr "" #. name for zun msgid "Zuni" -msgstr "" +msgstr "Zuni" #. name for zuy msgid "Zumaya" -msgstr "" +msgstr "Zumaya" #. name for zwa msgid "Zay" -msgstr "" +msgstr "Zay" #. name for zxx msgid "No linguistic content" -msgstr "" +msgstr "Sense contingut lingüístic" #. name for zyb msgid "Zhuang; Yongbei" -msgstr "" +msgstr "Zhuang; Yongbei" #. name for zyg msgid "Zhuang; Yang" @@ -30832,15 +30832,15 @@ msgstr "" #. name for zyj msgid "Zhuang; Youjiang" -msgstr "" +msgstr "Zhuang; Youjiang" #. name for zyn msgid "Zhuang; Yongnan" -msgstr "" +msgstr "Zhuang; Yongnan" #. name for zyp msgid "Zyphe" -msgstr "" +msgstr "Zyphe" #. name for zza msgid "Zaza" @@ -30848,4 +30848,4 @@ msgstr "" #. name for zzj msgid "Zhuang; Zuojiang" -msgstr "" +msgstr "Zhuang; Zuojiang" diff --git a/setup/iso_639/ru.po b/setup/iso_639/ru.po index 34d2e63b31..ecc5f756c2 100644 --- a/setup/iso_639/ru.po +++ b/setup/iso_639/ru.po @@ -13,14 +13,14 @@ msgstr "" "Report-Msgid-Bugs-To: Debian iso-codes team \n" "POT-Creation-Date: 2011-11-25 14:01+0000\n" -"PO-Revision-Date: 2013-02-21 23:51+0000\n" +"PO-Revision-Date: 2013-03-23 10:17+0000\n" "Last-Translator: Глория Хрусталёва \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-02-23 05:19+0000\n" -"X-Generator: Launchpad (build 16506)\n" +"X-Launchpad-Export-Date: 2013-03-24 04:45+0000\n" +"X-Generator: Launchpad (build 16540)\n" "Language: ru\n" #. name for aaa @@ -5381,7 +5381,7 @@ msgstr "" #. name for cof msgid "Colorado" -msgstr "" +msgstr "Колорадо" #. name for cog msgid "Chong" @@ -5505,7 +5505,7 @@ msgstr "" #. name for cqu msgid "Quechua; Chilean" -msgstr "" +msgstr "Кечуа; Чилийский" #. name for cra msgid "Chara" diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 1ad189db1a..cd75876dfa 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -377,7 +377,7 @@ def random_user_agent(choose=None): choose = random.randint(0, len(choices)-1) return choices[choose] -def browser(honor_time=True, max_time=2, mobile_browser=False, user_agent=None): +def browser(honor_time=True, max_time=2, mobile_browser=False, user_agent=None, use_robust_parser=False): ''' Create a mechanize browser for web scraping. The browser handles cookies, refresh requests and ignores robots.txt. Also uses proxy if available. @@ -386,7 +386,11 @@ def browser(honor_time=True, max_time=2, mobile_browser=False, user_agent=None): :param max_time: Maximum time in seconds to wait during a refresh request ''' from calibre.utils.browser import Browser - opener = Browser() + if use_robust_parser: + import mechanize + opener = Browser(factory=mechanize.RobustFactory()) + else: + opener = Browser() opener.set_handle_refresh(True, max_time=max_time, honor_time=honor_time) opener.set_handle_robots(False) if user_agent is None: diff --git a/src/calibre/constants.py b/src/calibre/constants.py index fc8307ca2d..bb85221558 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -4,7 +4,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = u'calibre' -numeric_version = (0, 9, 24) +numeric_version = (0, 9, 26) __version__ = u'.'.join(map(unicode, numeric_version)) __author__ = u"Kovid Goyal " diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index d1da07f721..bb23eae91a 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -757,8 +757,10 @@ from calibre.ebooks.metadata.sources.isbndb import ISBNDB from calibre.ebooks.metadata.sources.overdrive import OverDrive from calibre.ebooks.metadata.sources.douban import Douban from calibre.ebooks.metadata.sources.ozon import Ozon +from calibre.ebooks.metadata.sources.google_images import GoogleImages +from calibre.ebooks.metadata.sources.big_book_search import BigBookSearch -plugins += [GoogleBooks, Amazon, Edelweiss, OpenLibrary, ISBNDB, OverDrive, Douban, Ozon] +plugins += [GoogleBooks, GoogleImages, Amazon, Edelweiss, OpenLibrary, ISBNDB, OverDrive, Douban, Ozon, BigBookSearch] # }}} @@ -1296,15 +1298,6 @@ class StoreBeamEBooksDEStore(StoreBase): formats = ['EPUB', 'MOBI', 'PDF'] affiliate = True -class StoreBeWriteStore(StoreBase): - name = 'BeWrite Books' - description = u'Publishers of fine books. Highly selective and editorially driven. Does not offer: books for children or exclusively YA, erotica, swords-and-sorcery fantasy and space-opera-style science fiction. All other genres are represented.' - actual_plugin = 'calibre.gui2.store.stores.bewrite_plugin:BeWriteStore' - - drm_free_only = True - headquarters = 'US' - formats = ['EPUB', 'MOBI', 'PDF'] - class StoreBiblioStore(StoreBase): name = u'Библио.бг' author = 'Alex Stanev' @@ -1677,7 +1670,6 @@ plugins += [ StoreBaenWebScriptionStore, StoreBNStore, StoreBeamEBooksDEStore, - StoreBeWriteStore, StoreBiblioStore, StoreBookotekaStore, StoreChitankaStore, diff --git a/src/calibre/customize/ui.py b/src/calibre/customize/ui.py index 849d1a21f4..f6f4df4a78 100644 --- a/src/calibre/customize/ui.py +++ b/src/calibre/customize/ui.py @@ -91,7 +91,7 @@ def restore_plugin_state_to_default(plugin_or_name): config['enabled_plugins'] = ep default_disabled_plugins = set([ - 'Overdrive', 'Douban Books', 'OZON.ru', 'Edelweiss', + 'Overdrive', 'Douban Books', 'OZON.ru', 'Edelweiss', 'Google Images', 'Big Book Search', ]) def is_disabled(plugin): diff --git a/src/calibre/db/__init__.py b/src/calibre/db/__init__.py index 5d12bdc686..b0916ebf73 100644 --- a/src/calibre/db/__init__.py +++ b/src/calibre/db/__init__.py @@ -68,4 +68,5 @@ Various things that require other things before they can be migrated: libraries/switching/on calibre startup. 3. From refresh in the legacy interface: Rember to flush the composite column template cache. + 4. Replace the metadatabackup thread with the new implementation when using the new backend. ''' diff --git a/src/calibre/db/backend.py b/src/calibre/db/backend.py index 155e21d819..0194cfc2ae 100644 --- a/src/calibre/db/backend.py +++ b/src/calibre/db/backend.py @@ -41,8 +41,7 @@ Differences in semantics from pysqlite: ''' - -class DynamicFilter(object): # {{{ +class DynamicFilter(object): # {{{ 'No longer used, present for legacy compatibility' @@ -57,7 +56,7 @@ class DynamicFilter(object): # {{{ self.ids = frozenset(ids) # }}} -class DBPrefs(dict): # {{{ +class DBPrefs(dict): # {{{ 'Store preferences as key:value pairs in the db' @@ -114,9 +113,10 @@ class DBPrefs(dict): # {{{ return default def set_namespaced(self, namespace, key, val): - if u':' in key: raise KeyError('Colons are not allowed in keys') - if u':' in namespace: raise KeyError('Colons are not allowed in' - ' the namespace') + if u':' in key: + raise KeyError('Colons are not allowed in keys') + if u':' in namespace: + raise KeyError('Colons are not allowed in the namespace') key = u'namespaced:%s:%s'%(namespace, key) self[key] = val @@ -170,7 +170,8 @@ def pynocase(one, two, encoding='utf-8'): return cmp(one.lower(), two.lower()) def _author_to_author_sort(x): - if not x: return '' + if not x: + return '' return author_to_author_sort(x.replace('|', ',')) def icu_collator(s1, s2): @@ -239,9 +240,9 @@ def AumSortedConcatenate(): # }}} -class Connection(apsw.Connection): # {{{ +class Connection(apsw.Connection): # {{{ - BUSY_TIMEOUT = 2000 # milliseconds + BUSY_TIMEOUT = 2000 # milliseconds def __init__(self, path): apsw.Connection.__init__(self, path) @@ -257,7 +258,7 @@ class Connection(apsw.Connection): # {{{ self.createscalarfunction('title_sort', title_sort, 1) self.createscalarfunction('author_to_author_sort', _author_to_author_sort, 1) - self.createscalarfunction('uuid4', lambda : str(uuid.uuid4()), + self.createscalarfunction('uuid4', lambda: str(uuid.uuid4()), 0) # Dummy functions for dynamically created filters @@ -380,7 +381,7 @@ class DB(object): self.initialize_custom_columns() self.initialize_tables() - def initialize_prefs(self, default_prefs): # {{{ + def initialize_prefs(self, default_prefs): # {{{ self.prefs = DBPrefs(self) if default_prefs is not None and not self._exists: @@ -493,7 +494,7 @@ class DB(object): self.prefs.set('user_categories', user_cats) # }}} - def initialize_custom_columns(self): # {{{ + def initialize_custom_columns(self): # {{{ with self.conn: # Delete previously marked custom columns for record in self.conn.get( @@ -634,11 +635,11 @@ class DB(object): self.custom_data_adapters = { 'float': adapt_number, - 'int': adapt_number, - 'rating':lambda x,d : x if x is None else min(10., max(0., float(x))), - 'bool': adapt_bool, + 'int': adapt_number, + 'rating':lambda x,d: x if x is None else min(10., max(0., float(x))), + 'bool': adapt_bool, 'comments': lambda x,d: adapt_text(x, {'is_multiple':False}), - 'datetime' : adapt_datetime, + 'datetime': adapt_datetime, 'text':adapt_text, 'series':adapt_text, 'enumeration': adapt_enum @@ -661,7 +662,7 @@ class DB(object): # }}} - def initialize_tables(self): # {{{ + def initialize_tables(self): # {{{ tables = self.tables = {} for col in ('title', 'sort', 'author_sort', 'series_index', 'comments', 'timestamp', 'pubdate', 'uuid', 'path', 'cover', @@ -866,8 +867,8 @@ class DB(object): Read all data from the db into the python in-memory tables ''' - with self.conn: # Use a single transaction, to ensure nothing modifies - # the db while we are reading + with self.conn: # Use a single transaction, to ensure nothing modifies + # the db while we are reading for table in self.tables.itervalues(): try: table.read(self) @@ -885,7 +886,7 @@ class DB(object): return fmt_path try: candidates = glob.glob(os.path.join(path, '*'+fmt)) - except: # If path contains strange characters this throws an exc + except: # If path contains strange characters this throws an exc candidates = [] if fmt and candidates and os.path.exists(candidates[0]): shutil.copyfile(candidates[0], fmt_path) @@ -947,23 +948,39 @@ class DB(object): if not isinstance(dest, basestring): raise Exception("Error, you must pass the dest as a path when" " using windows_atomic_move") - if dest and not samefile(dest, path): - windows_atomic_move.copy_path_to(path, dest) + if dest: + if samefile(dest, path): + # Ensure that the file has the same case as dest + try: + if path != dest: + os.rename(path, dest) + except: + pass # Nothing too catastrophic happened, the cases mismatch, that's all + else: + windows_atomic_move.copy_path_to(path, dest) else: if hasattr(dest, 'write'): with lopen(path, 'rb') as f: shutil.copyfileobj(f, dest) if hasattr(dest, 'flush'): dest.flush() - elif dest and not samefile(dest, path): - if use_hardlink: - try: - hardlink_file(path, dest) - return True - except: - pass - with lopen(path, 'rb') as f, lopen(dest, 'wb') as d: - shutil.copyfileobj(f, d) + elif dest: + if samefile(dest, path): + if not self.is_case_sensitive and path != dest: + # Ensure that the file has the same case as dest + try: + os.rename(path, dest) + except: + pass # Nothing too catastrophic happened, the cases mismatch, that's all + else: + if use_hardlink: + try: + hardlink_file(path, dest) + return True + except: + pass + with lopen(path, 'rb') as f, lopen(dest, 'wb') as d: + shutil.copyfileobj(f, d) return True def windows_check_if_files_in_use(self, paths): @@ -1005,7 +1022,7 @@ class DB(object): if not os.path.exists(tpath): os.makedirs(tpath) - if source_ok: # Migrate existing files + if source_ok: # Migrate existing files dest = os.path.join(tpath, 'cover.jpg') self.copy_cover_to(current_path, dest, windows_atomic_move=wam, use_hardlink=True) @@ -1048,8 +1065,18 @@ class DB(object): os.rename(os.path.join(curpath, oldseg), os.path.join(curpath, newseg)) except: - break # Fail silently since nothing catastrophic has happened + break # Fail silently since nothing catastrophic has happened curpath = os.path.join(curpath, newseg) + def write_backup(self, path, raw): + path = os.path.abspath(os.path.join(self.library_path, path, 'metadata.opf')) + with lopen(path, 'wb') as f: + f.write(raw) + + def read_backup(self, path): + path = os.path.abspath(os.path.join(self.library_path, path, 'metadata.opf')) + with lopen(path, 'rb') as f: + return f.read() + # }}} diff --git a/src/calibre/db/backup.py b/src/calibre/db/backup.py new file mode 100644 index 0000000000..6410a347c6 --- /dev/null +++ b/src/calibre/db/backup.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8 +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2013, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import weakref, traceback +from threading import Thread, Event + +from calibre import prints +from calibre.ebooks.metadata.opf2 import metadata_to_opf + +class Abort(Exception): + pass + +class MetadataBackup(Thread): + ''' + Continuously backup changed metadata into OPF files + in the book directory. This class runs in its own + thread. + ''' + + def __init__(self, db, interval=2, scheduling_interval=0.1): + Thread.__init__(self) + self.daemon = True + self._db = weakref.ref(db) + self.stop_running = Event() + self.interval = interval + self.scheduling_interval = scheduling_interval + + @property + def db(self): + ans = self._db() + if ans is None: + raise Abort() + return ans + + def stop(self): + self.stop_running.set() + + def wait(self, interval): + if self.stop_running.wait(interval): + raise Abort() + + def run(self): + while not self.stop_running.is_set(): + try: + self.wait(self.interval) + self.do_one() + except Abort: + break + + def do_one(self): + try: + book_id = self.db.get_a_dirtied_book() + if book_id is None: + return + except Abort: + raise + except: + # Happens during interpreter shutdown + return + + self.wait(0) + + try: + mi, sequence = self.db.get_metadata_for_dump(book_id) + except: + prints('Failed to get backup metadata for id:', book_id, 'once') + traceback.print_exc() + self.wait(self.interval) + try: + mi, sequence = self.db.get_metadata_for_dump(book_id) + except: + prints('Failed to get backup metadata for id:', book_id, 'again, giving up') + traceback.print_exc() + return + + if mi is None: + self.db.clear_dirtied(book_id, sequence) + + # Give the GUI thread a chance to do something. Python threads don't + # have priorities, so this thread would naturally keep the processor + # until some scheduling event happens. The wait makes such an event + self.wait(self.scheduling_interval) + + try: + raw = metadata_to_opf(mi) + except: + prints('Failed to convert to opf for id:', book_id) + traceback.print_exc() + return + + self.wait(self.scheduling_interval) + + try: + self.db.write_backup(book_id, raw) + except: + prints('Failed to write backup metadata for id:', book_id, 'once') + self.wait(self.interval) + try: + self.db.write_backup(book_id, raw) + except: + prints('Failed to write backup metadata for id:', book_id, 'again, giving up') + return + + self.db.clear_dirtied(book_id, sequence) + + def break_cycles(self): + # Legacy compatibility + pass + diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index 980af768f9..0fa280d997 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -7,7 +7,7 @@ __license__ = 'GPL v3' __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import os, traceback +import os, traceback, random from io import BytesIO from collections import defaultdict from functools import wraps, partial @@ -15,7 +15,7 @@ from functools import wraps, partial from calibre.constants import iswindows from calibre.db import SPOOL_SIZE from calibre.db.categories import get_categories -from calibre.db.locking import create_locks, RecordLock +from calibre.db.locking import create_locks from calibre.db.errors import NoSuchFormat from calibre.db.fields import create_field from calibre.db.search import Search @@ -23,9 +23,10 @@ from calibre.db.tables import VirtualTable from calibre.db.write import get_series_values from calibre.db.lazy import FormatMetadata, FormatsList from calibre.ebooks.metadata.book.base import Metadata +from calibre.ebooks.metadata.opf2 import metadata_to_opf from calibre.ptempfile import (base_dir, PersistentTemporaryFile, SpooledTemporaryFile) -from calibre.utils.date import now +from calibre.utils.date import now as nowf from calibre.utils.icu import sort_key def api(f): @@ -57,9 +58,10 @@ class Cache(object): self.fields = {} self.composites = set() self.read_lock, self.write_lock = create_locks() - self.record_lock = RecordLock(self.read_lock) self.format_metadata_cache = defaultdict(dict) self.formatter_template_cache = {} + self.dirtied_cache = {} + self.dirtied_sequence = 0 self._search_api = Search(self.field_metadata.get_search_terms()) # Implement locking for all simple read/write API methods @@ -78,17 +80,18 @@ class Cache(object): self.initialize_dynamic() + @write_api def initialize_dynamic(self): # Reconstruct the user categories, putting them into field_metadata # Assumption is that someone else will fix them if they change. self.field_metadata.remove_dynamic_categories() - for user_cat in sorted(self.pref('user_categories', {}).iterkeys(), key=sort_key): - cat_name = '@' + user_cat # add the '@' to avoid name collision + for user_cat in sorted(self._pref('user_categories', {}).iterkeys(), key=sort_key): + cat_name = '@' + user_cat # add the '@' to avoid name collision self.field_metadata.add_user_category(label=cat_name, name=user_cat) # add grouped search term user categories - muc = frozenset(self.pref('grouped_search_make_user_categories', [])) - for cat in sorted(self.pref('grouped_search_terms', {}).iterkeys(), key=sort_key): + muc = frozenset(self._pref('grouped_search_make_user_categories', [])) + for cat in sorted(self._pref('grouped_search_terms', {}).iterkeys(), key=sort_key): if cat in muc: # There is a chance that these can be duplicates of an existing # user category. Print the exception and continue. @@ -102,15 +105,20 @@ class Cache(object): # self.field_metadata.add_search_category(label='search', name=_('Searches')) self.field_metadata.add_grouped_search_terms( - self.pref('grouped_search_terms', {})) + self._pref('grouped_search_terms', {})) self._search_api.change_locations(self.field_metadata.get_search_terms()) + self.dirtied_cache = {x:i for i, (x,) in enumerate( + self.backend.conn.execute('SELECT book FROM metadata_dirtied'))} + if self.dirtied_cache: + self.dirtied_sequence = max(self.dirtied_cache.itervalues())+1 + @property def field_metadata(self): return self.backend.field_metadata - def _get_metadata(self, book_id, get_user_categories=True): # {{{ + def _get_metadata(self, book_id, get_user_categories=True): # {{{ mi = Metadata(None, template_cache=self.formatter_template_cache) author_ids = self._field_ids_for('authors', book_id) aut_list = [self._author_data(i) for i in author_ids] @@ -131,7 +139,7 @@ class Cache(object): mi.author_link_map = aul mi.comments = self._field_for('comments', book_id) mi.publisher = self._field_for('publisher', book_id) - n = now() + n = nowf() mi.timestamp = self._field_for('timestamp', book_id, default_value=n) mi.pubdate = self._field_for('pubdate', book_id, default_value=n) mi.uuid = self._field_for('uuid', book_id, @@ -395,16 +403,19 @@ class Cache(object): ''' if as_file: ret = SpooledTemporaryFile(SPOOL_SIZE) - if not self.copy_cover_to(book_id, ret): return + if not self.copy_cover_to(book_id, ret): + return ret.seek(0) elif as_path: pt = PersistentTemporaryFile('_dbcover.jpg') with pt: - if not self.copy_cover_to(book_id, pt): return + if not self.copy_cover_to(book_id, pt): + return ret = pt.name else: buf = BytesIO() - if not self.copy_cover_to(book_id, buf): return + if not self.copy_cover_to(book_id, buf): + return ret = buf.getvalue() if as_image: from PyQt4.Qt import QImage @@ -413,7 +424,7 @@ class Cache(object): ret = i return ret - @api + @read_api def copy_cover_to(self, book_id, dest, use_hardlink=False): ''' Copy the cover to the file like object ``dest``. Returns False @@ -422,17 +433,15 @@ class Cache(object): copied to it iff the path is different from the current path (taking case sensitivity into account). ''' - with self.read_lock: - try: - path = self._field_for('path', book_id).replace('/', os.sep) - except: - return False + try: + path = self._field_for('path', book_id).replace('/', os.sep) + except AttributeError: + return False - with self.record_lock.lock(book_id): - return self.backend.copy_cover_to(path, dest, + return self.backend.copy_cover_to(path, dest, use_hardlink=use_hardlink) - @api + @read_api def copy_format_to(self, book_id, fmt, dest, use_hardlink=False): ''' Copy the format ``fmt`` to the file like object ``dest``. If the @@ -441,15 +450,13 @@ class Cache(object): the path is different from the current path (taking case sensitivity into account). ''' - with self.read_lock: - try: - name = self.fields['formats'].format_fname(book_id, fmt) - path = self._field_for('path', book_id).replace('/', os.sep) - except: - raise NoSuchFormat('Record %d has no %s file'%(book_id, fmt)) + try: + name = self.fields['formats'].format_fname(book_id, fmt) + path = self._field_for('path', book_id).replace('/', os.sep) + except (KeyError, AttributeError): + raise NoSuchFormat('Record %d has no %s file'%(book_id, fmt)) - with self.record_lock.lock(book_id): - return self.backend.copy_format_to(book_id, fmt, name, path, dest, + return self.backend.copy_format_to(book_id, fmt, name, path, dest, use_hardlink=use_hardlink) @read_api @@ -520,16 +527,16 @@ class Cache(object): this means that repeated calls yield the same temp file (which is re-created each time) ''' - with self.read_lock: - ext = ('.'+fmt.lower()) if fmt else '' - try: - fname = self.fields['formats'].format_fname(book_id, fmt) - except: - return None - fname += ext - + ext = ('.'+fmt.lower()) if fmt else '' if as_path: if preserve_filename: + with self.read_lock: + try: + fname = self.fields['formats'].format_fname(book_id, fmt) + except: + return None + fname += ext + bd = base_dir() d = os.path.join(bd, 'format_abspath') try: @@ -537,36 +544,40 @@ class Cache(object): except: pass ret = os.path.join(d, fname) - with self.record_lock.lock(book_id): - try: - self.copy_format_to(book_id, fmt, ret) - except NoSuchFormat: - return None + try: + self.copy_format_to(book_id, fmt, ret) + except NoSuchFormat: + return None else: - with PersistentTemporaryFile(ext) as pt, self.record_lock.lock(book_id): + with PersistentTemporaryFile(ext) as pt: try: self.copy_format_to(book_id, fmt, pt) except NoSuchFormat: return None ret = pt.name elif as_file: - ret = SpooledTemporaryFile(SPOOL_SIZE) - with self.record_lock.lock(book_id): + with self.read_lock: try: - self.copy_format_to(book_id, fmt, ret) - except NoSuchFormat: + fname = self.fields['formats'].format_fname(book_id, fmt) + except: return None + fname += ext + + ret = SpooledTemporaryFile(SPOOL_SIZE) + try: + self.copy_format_to(book_id, fmt, ret) + except NoSuchFormat: + return None ret.seek(0) # Various bits of code try to use the name as the default # title when reading metadata, so set it ret.name = fname else: buf = BytesIO() - with self.record_lock.lock(book_id): - try: - self.copy_format_to(book_id, fmt, buf) - except NoSuchFormat: - return None + try: + self.copy_format_to(book_id, fmt, buf) + except NoSuchFormat: + return None ret = buf.getvalue() @@ -620,6 +631,30 @@ class Cache(object): return get_categories(self, sort=sort, book_ids=book_ids, icon_map=icon_map) + @write_api + def update_last_modified(self, book_ids, now=None): + if now is None: + now = nowf() + if book_ids: + f = self.fields['last_modified'] + f.writer.set_books({book_id:now for book_id in book_ids}, self.backend) + + @write_api + def mark_as_dirty(self, book_ids): + self._update_last_modified(book_ids) + already_dirtied = set(self.dirtied_cache).intersection(book_ids) + new_dirtied = book_ids - already_dirtied + already_dirtied = {book_id:self.dirtied_sequence+i for i, book_id in enumerate(already_dirtied)} + if already_dirtied: + self.dirtied_sequence = max(already_dirtied.itervalues()) + 1 + self.dirtied_cache.update(already_dirtied) + if new_dirtied: + self.backend.conn.executemany('INSERT OR IGNORE INTO metadata_dirtied (book) VALUES (?)', + ((x,) for x in new_dirtied)) + new_dirtied = {book_id:self.dirtied_sequence+i for i, book_id in enumerate(new_dirtied)} + self.dirtied_sequence = max(new_dirtied.itervalues()) + 1 + self.dirtied_cache.update(new_dirtied) + @write_api def set_field(self, name, book_id_to_val_map, allow_case_change=True): f = self.fields[name] @@ -637,7 +672,7 @@ class Cache(object): else: v = sid = None if name.startswith('#') and sid is None: - sid = 1.0 # The value will be set to 1.0 in the db table + sid = 1.0 # The value will be set to 1.0 in the db table bimap[k] = v if sid is not None: simap[k] = sid @@ -657,7 +692,7 @@ class Cache(object): if dirtied and update_path: self._update_path(dirtied, mark_as_dirtied=False) - # TODO: Mark these as dirtied so that the opf is regenerated + self._mark_as_dirty(dirtied) return dirtied @@ -668,13 +703,115 @@ class Cache(object): author = self._field_for('authors', book_id, default_value=(_('Unknown'),))[0] self.backend.update_path(book_id, title, author, self.fields['path'], self.fields['formats']) if mark_as_dirtied: + self._mark_as_dirty(book_ids) + + @read_api + def get_a_dirtied_book(self): + if self.dirtied_cache: + return random.choice(tuple(self.dirtied_cache.iterkeys())) + return None + + @read_api + def get_metadata_for_dump(self, book_id): + mi = None + # get the current sequence number for this book to pass back to the + # backup thread. This will avoid double calls in the case where the + # thread has not done the work between the put and the get_metadata + sequence = self.dirtied_cache.get(book_id, None) + if sequence is not None: + try: + # While a book is being created, the path is empty. Don't bother to + # try to write the opf, because it will go to the wrong folder. + if self._field_for('path', book_id): + mi = self._get_metadata(book_id) + # Always set cover to cover.jpg. Even if cover doesn't exist, + # no harm done. This way no need to call dirtied when + # cover is set/removed + mi.cover = 'cover.jpg' + except: + # This almost certainly means that the book has been deleted while + # the backup operation sat in the queue. pass - # TODO: Mark these books as dirtied so that metadata.opf is - # re-created + return mi, sequence + + @write_api + def clear_dirtied(self, book_id, sequence): + ''' + Clear the dirtied indicator for the books. This is used when fetching + metadata, creating an OPF, and writing a file are separated into steps. + The last step is clearing the indicator + ''' + dc_sequence = self.dirtied_cache.get(book_id, None) + if dc_sequence is None or sequence is None or dc_sequence == sequence: + self.backend.conn.execute('DELETE FROM metadata_dirtied WHERE book=?', + (book_id,)) + self.dirtied_cache.pop(book_id, None) + + @write_api + def write_backup(self, book_id, raw): + try: + path = self._field_for('path', book_id).replace('/', os.sep) + except: + return + + self.backend.write_backup(path, raw) + + @read_api + def dirty_queue_length(self): + return len(self.dirtied_cache) + + @read_api + def read_backup(self, book_id): + ''' Return the OPF metadata backup for the book as a bytestring or None + if no such backup exists. ''' + try: + path = self._field_for('path', book_id).replace('/', os.sep) + except: + return + + try: + return self.backend.read_backup(path) + except EnvironmentError: + return None + + @write_api + def dump_metadata(self, book_ids=None, remove_from_dirtied=True, + callback=None): + ''' + Write metadata for each record to an individual OPF file. If callback + is not None, it is called once at the start with the number of book_ids + being processed. And once for every book_id, with arguments (book_id, + mi, ok). + ''' + if book_ids is None: + book_ids = set(self.dirtied_cache) + + if callback is not None: + callback(len(book_ids), True, False) + + for book_id in book_ids: + if self._field_for('path', book_id) is None: + if callback is not None: + callback(book_id, None, False) + continue + mi, sequence = self._get_metadata_for_dump(book_id) + if mi is None: + if callback is not None: + callback(book_id, mi, False) + continue + try: + raw = metadata_to_opf(mi) + self._write_backup(book_id, raw) + if remove_from_dirtied: + self._clear_dirtied(book_id, sequence) + except: + pass + if callback is not None: + callback(book_id, mi, True) # }}} -class SortKey(object): +class SortKey(object): # {{{ def __init__(self, fields, sort_keys, book_id): self.orders = tuple(1 if f[1] else -1 for f in fields) @@ -686,19 +823,5 @@ class SortKey(object): if ans != 0: return ans * order return 0 - - -# Testing {{{ - -def test(library_path): - from calibre.db.backend import DB - backend = DB(library_path) - cache = Cache(backend) - cache.init() - print ('All book ids:', cache.all_book_ids()) - -if __name__ == '__main__': - from calibre.utils.config import prefs - test(prefs['library_path']) - # }}} + diff --git a/src/calibre/db/categories.py b/src/calibre/db/categories.py index f49789e16c..3f7bbb9e61 100644 --- a/src/calibre/db/categories.py +++ b/src/calibre/db/categories.py @@ -18,7 +18,7 @@ from calibre.utils.config_base import tweaks from calibre.utils.icu import sort_key from calibre.utils.search_query_parser import saved_searches -CATEGORY_SORTS = ('name', 'popularity', 'rating') # This has to be a tuple not a set +CATEGORY_SORTS = ('name', 'popularity', 'rating') # This has to be a tuple not a set class Tag(object): @@ -218,7 +218,7 @@ def get_categories(dbcache, sort='name', book_ids=None, icon_map=None): else: items.append(taglist[label][n]) # else: do nothing, to not include nodes w zero counts - cat_name = '@' + user_cat # add the '@' to avoid name collision + cat_name = '@' + user_cat # add the '@' to avoid name collision # Not a problem if we accumulate entries in the icon map if icon_map is not None: icon_map[cat_name] = icon_map['user:'] diff --git a/src/calibre/db/fields.py b/src/calibre/db/fields.py index e0074de7d1..20d0d75ff4 100644 --- a/src/calibre/db/fields.py +++ b/src/calibre/db/fields.py @@ -31,7 +31,7 @@ class Field(object): self.table_type = self.table.table_type self._sort_key = (sort_key if dt in ('text', 'series', 'enumeration') else lambda x: x) self._default_sort_key = '' - if dt in { 'int', 'float', 'rating' }: + if dt in {'int', 'float', 'rating'}: self._default_sort_key = 0 elif dt == 'bool': self._default_sort_key = None @@ -138,7 +138,7 @@ class OneToOneField(Field): return self.table.book_col_map.iterkeys() def sort_keys_for_books(self, get_metadata, lang_map, all_book_ids): - return {id_ : self._sort_key(self.table.book_col_map.get(id_, + return {id_: self._sort_key(self.table.book_col_map.get(id_, self._default_sort_key)) for id_ in all_book_ids} def iter_searchable_values(self, get_metadata, candidates, default_value=None): @@ -183,7 +183,7 @@ class CompositeField(OneToOneField): return ans def sort_keys_for_books(self, get_metadata, lang_map, all_book_ids): - return {id_ : sort_key(self.get_value_with_cache(id_, get_metadata)) for id_ in + return {id_: sort_key(self.get_value_with_cache(id_, get_metadata)) for id_ in all_book_ids} def iter_searchable_values(self, get_metadata, candidates, default_value=None): @@ -245,7 +245,7 @@ class OnDeviceField(OneToOneField): return iter(()) def sort_keys_for_books(self, get_metadata, lang_map, all_book_ids): - return {id_ : self.for_book(id_) for id_ in + return {id_: self.for_book(id_) for id_ in all_book_ids} def iter_searchable_values(self, get_metadata, candidates, default_value=None): @@ -280,12 +280,12 @@ class ManyToOneField(Field): return self.table.id_map.iterkeys() def sort_keys_for_books(self, get_metadata, lang_map, all_book_ids): - ans = {id_ : self.table.book_col_map.get(id_, None) + ans = {id_: self.table.book_col_map.get(id_, None) for id_ in all_book_ids} - sk_map = {cid : (self._default_sort_key if cid is None else + sk_map = {cid: (self._default_sort_key if cid is None else self._sort_key(self.table.id_map[cid])) for cid in ans.itervalues()} - return {id_ : sk_map[cid] for id_, cid in ans.iteritems()} + return {id_: sk_map[cid] for id_, cid in ans.iteritems()} def iter_searchable_values(self, get_metadata, candidates, default_value=None): cbm = self.table.col_book_map @@ -327,14 +327,14 @@ class ManyToManyField(Field): return self.table.id_map.iterkeys() def sort_keys_for_books(self, get_metadata, lang_map, all_book_ids): - ans = {id_ : self.table.book_col_map.get(id_, ()) + ans = {id_: self.table.book_col_map.get(id_, ()) for id_ in all_book_ids} all_cids = set() for cids in ans.itervalues(): all_cids = all_cids.union(set(cids)) - sk_map = {cid : self._sort_key(self.table.id_map[cid]) + sk_map = {cid: self._sort_key(self.table.id_map[cid]) for cid in all_cids} - return {id_ : (tuple(sk_map[cid] for cid in cids) if cids else + return {id_: (tuple(sk_map[cid] for cid in cids) if cids else (self._default_sort_key,)) for id_, cids in ans.iteritems()} @@ -369,9 +369,9 @@ class IdentifiersField(ManyToManyField): def sort_keys_for_books(self, get_metadata, lang_map, all_book_ids): 'Sort by identifier keys' - ans = {id_ : self.table.book_col_map.get(id_, ()) + ans = {id_: self.table.book_col_map.get(id_, ()) for id_ in all_book_ids} - return {id_ : (tuple(sorted(cids.iterkeys())) if cids else + return {id_: (tuple(sorted(cids.iterkeys())) if cids else (self._default_sort_key,)) for id_, cids in ans.iteritems()} @@ -397,9 +397,9 @@ class AuthorsField(ManyToManyField): def author_data(self, author_id): return { - 'name' : self.table.id_map[author_id], - 'sort' : self.table.asort_map[author_id], - 'link' : self.table.alink_map[author_id], + 'name': self.table.id_map[author_id], + 'sort': self.table.asort_map[author_id], + 'link': self.table.alink_map[author_id], } def category_sort_value(self, item_id, book_ids, lang_map): @@ -505,9 +505,9 @@ class TagsField(ManyToManyField): def create_field(name, table): cls = { - ONE_ONE : OneToOneField, - MANY_ONE : ManyToOneField, - MANY_MANY : ManyToManyField, + ONE_ONE: OneToOneField, + MANY_ONE: ManyToOneField, + MANY_MANY: ManyToManyField, }[table.table_type] if name == 'authors': cls = AuthorsField diff --git a/src/calibre/db/locking.py b/src/calibre/db/locking.py index d08c7b99fe..0791a5ac07 100644 --- a/src/calibre/db/locking.py +++ b/src/calibre/db/locking.py @@ -39,7 +39,7 @@ def create_locks(): l = SHLock() return RWLockWrapper(l), RWLockWrapper(l, is_shared=False) -class SHLock(object): # {{{ +class SHLock(object): # {{{ ''' Shareable lock class. Used to implement the Multiple readers-single writer paradigm. As best as I can tell, neither writer nor reader starvation @@ -191,7 +191,7 @@ class SHLock(object): # {{{ try: return self._free_waiters.pop() except IndexError: - return Condition(self._lock)#, verbose=True) + return Condition(self._lock) def _return_waiter(self, waiter): self._free_waiters.append(waiter) diff --git a/src/calibre/db/schema_upgrades.py b/src/calibre/db/schema_upgrades.py index f3ca6f9852..c8eaa748c7 100644 --- a/src/calibre/db/schema_upgrades.py +++ b/src/calibre/db/schema_upgrades.py @@ -172,7 +172,6 @@ class SchemaUpgrade(object): ''' ) - def upgrade_version_6(self): 'Show authors in order' self.conn.execute(''' @@ -337,7 +336,7 @@ class SchemaUpgrade(object): FROM {tn}; '''.format(tn=table_name, cn=column_name, - vcn=view_column_name, scn= sort_column_name)) + vcn=view_column_name, scn=sort_column_name)) self.conn.execute(script) def create_cust_tag_browser_view(table_name, link_table_name): diff --git a/src/calibre/db/search.py b/src/calibre/db/search.py index 57039e191d..c7fed18f9d 100644 --- a/src/calibre/db/search.py +++ b/src/calibre/db/search.py @@ -64,7 +64,7 @@ def _match(query, value, matchkind, use_primary_find_in_search=True): else: internal_match_ok = False for t in value: - try: ### ignore regexp exceptions, required because search-ahead tries before typing is finished + try: # ignore regexp exceptions, required because search-ahead tries before typing is finished t = icu_lower(t) if (matchkind == EQUALS_MATCH): if internal_match_ok: @@ -95,20 +95,20 @@ def _match(query, value, matchkind, use_primary_find_in_search=True): return False # }}} -class DateSearch(object): # {{{ +class DateSearch(object): # {{{ def __init__(self): self.operators = { - '=' : (1, self.eq), - '!=' : (2, self.ne), - '>' : (1, self.gt), - '>=' : (2, self.ge), - '<' : (1, self.lt), - '<=' : (2, self.le), + '=': (1, self.eq), + '!=': (2, self.ne), + '>': (1, self.gt), + '>=': (2, self.ge), + '<': (1, self.lt), + '<=': (2, self.le), } - self.local_today = { '_today', 'today', icu_lower(_('today')) } - self.local_yesterday = { '_yesterday', 'yesterday', icu_lower(_('yesterday')) } - self.local_thismonth = { '_thismonth', 'thismonth', icu_lower(_('thismonth')) } + self.local_today = {'_today', 'today', icu_lower(_('today'))} + self.local_yesterday = {'_yesterday', 'yesterday', icu_lower(_('yesterday'))} + self.local_thismonth = {'_thismonth', 'thismonth', icu_lower(_('thismonth'))} self.daysago_pat = re.compile(r'(%s|daysago|_daysago)$'%_('daysago')) def eq(self, dbdate, query, field_count): @@ -216,16 +216,16 @@ class DateSearch(object): # {{{ return matches # }}} -class NumericSearch(object): # {{{ +class NumericSearch(object): # {{{ def __init__(self): self.operators = { - '=':( 1, lambda r, q: r == q ), - '>':( 1, lambda r, q: r is not None and r > q ), - '<':( 1, lambda r, q: r is not None and r < q ), - '!=':( 2, lambda r, q: r != q ), - '>=':( 2, lambda r, q: r is not None and r >= q ), - '<=':( 2, lambda r, q: r is not None and r <= q ) + '=':(1, lambda r, q: r == q), + '>':(1, lambda r, q: r is not None and r > q), + '<':(1, lambda r, q: r is not None and r < q), + '!=':(2, lambda r, q: r != q), + '>=':(2, lambda r, q: r is not None and r >= q), + '<=':(2, lambda r, q: r is not None and r <= q) } def __call__(self, query, field_iter, location, datatype, candidates, is_many=False): @@ -267,7 +267,7 @@ class NumericSearch(object): # {{{ p, relop = self.operators['='] cast = int - if dt == 'rating': + if dt == 'rating': cast = lambda x: 0 if x is None else int(x) adjust = lambda x: x/2 elif dt in ('float', 'composite'): @@ -303,7 +303,7 @@ class NumericSearch(object): # {{{ # }}} -class BooleanSearch(object): # {{{ +class BooleanSearch(object): # {{{ def __init__(self): self.local_no = icu_lower(_('no')) @@ -324,27 +324,27 @@ class BooleanSearch(object): # {{{ for val, book_ids in field_iter(): val = force_to_bool(val) if not bools_are_tristate: - if val is None or not val: # item is None or set to false - if query in { self.local_no, self.local_unchecked, 'no', '_no', 'false' }: + if val is None or not val: # item is None or set to false + if query in {self.local_no, self.local_unchecked, 'no', '_no', 'false'}: matches |= book_ids - else: # item is explicitly set to true - if query in { self.local_yes, self.local_checked, 'yes', '_yes', 'true' }: + else: # item is explicitly set to true + if query in {self.local_yes, self.local_checked, 'yes', '_yes', 'true'}: matches |= book_ids else: if val is None: - if query in { self.local_empty, self.local_blank, 'empty', '_empty', 'false' }: + if query in {self.local_empty, self.local_blank, 'empty', '_empty', 'false'}: matches |= book_ids - elif not val: # is not None and false - if query in { self.local_no, self.local_unchecked, 'no', '_no', 'true' }: + elif not val: # is not None and false + if query in {self.local_no, self.local_unchecked, 'no', '_no', 'true'}: matches |= book_ids - else: # item is not None and true - if query in { self.local_yes, self.local_checked, 'yes', '_yes', 'true' }: + else: # item is not None and true + if query in {self.local_yes, self.local_checked, 'yes', '_yes', 'true'}: matches |= book_ids return matches # }}} -class KeyPairSearch(object): # {{{ +class KeyPairSearch(object): # {{{ def __call__(self, query, field_iter, candidates, use_primary_find): matches = set() @@ -547,11 +547,12 @@ class Parser(SearchQueryParser): field_metadata = {} for x, fm in self.field_metadata.iteritems(): - if x.startswith('@'): continue + if x.startswith('@'): + continue if fm['search_terms'] and x != 'series_sort': all_locs.add(x) field_metadata[x] = fm - if fm['datatype'] in { 'composite', 'text', 'comments', 'series', 'enumeration' }: + if fm['datatype'] in {'composite', 'text', 'comments', 'series', 'enumeration'}: text_fields.add(x) locations = all_locs if location == 'all' else {location} @@ -687,8 +688,8 @@ class Search(object): dbcache, all_book_ids, dbcache.pref('grouped_search_terms'), self.date_search, self.num_search, self.bool_search, self.keypair_search, - prefs[ 'limit_search_columns' ], - prefs[ 'limit_search_columns_to' ], self.all_search_locations, + prefs['limit_search_columns'], + prefs['limit_search_columns_to'], self.all_search_locations, virtual_fields) try: diff --git a/src/calibre/db/tables.py b/src/calibre/db/tables.py index bbc5e3bdef..fc62fbe951 100644 --- a/src/calibre/db/tables.py +++ b/src/calibre/db/tables.py @@ -82,7 +82,7 @@ class OneToOneTable(Table): self.metadata['column'], self.metadata['table'])): self.book_col_map[row[0]] = self.unserialize(row[1]) -class PathTable(OneToOneTable): +class PathTable(OneToOneTable): def set_path(self, book_id, path, db): self.book_col_map[book_id] = path diff --git a/src/calibre/db/tests/filesystem.py b/src/calibre/db/tests/filesystem.py index 93f4891ac0..168eec53a4 100644 --- a/src/calibre/db/tests/filesystem.py +++ b/src/calibre/db/tests/filesystem.py @@ -60,6 +60,12 @@ class FilesystemTest(BaseTest): fpath = c.format_abspath(1, 'FMT1').replace(os.sep, '/').split('/') ae(fpath[-3:], ['Moved', 'Moved (1)', 'Moved - Moved.fmt1']) af(os.path.exists(os.path.dirname(orig_fpath)), 'Original book folder still exists') + # Check that the filesystem reflects fpath (especially on + # case-insensitive systems). + for x in range(1, 4): + base = os.sep.join(fpath[:-x]) + part = fpath[-x:][0] + self.assertIn(part, os.listdir(base)) @unittest.skipUnless(iswindows, 'Windows only') def test_windows_atomic_move(self): diff --git a/src/calibre/db/tests/main.py b/src/calibre/db/tests/main.py index c4bb058b7e..bdc9561ec5 100644 --- a/src/calibre/db/tests/main.py +++ b/src/calibre/db/tests/main.py @@ -9,15 +9,32 @@ __docformat__ = 'restructuredtext en' import unittest, os, argparse +try: + import init_calibre # noqa +except ImportError: + pass + def find_tests(): return unittest.defaultTestLoader.discover(os.path.dirname(os.path.abspath(__file__)), pattern='*.py') if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('name', nargs='?', default=None, help='The name of the test to run, for e.g. writing.WritingTest.many_many_basic') + parser.add_argument('name', nargs='?', default=None, + help='The name of the test to run, for e.g. writing.WritingTest.many_many_basic or .many_many_basic for a shortcut') args = parser.parse_args() - if args.name: - unittest.TextTestRunner(verbosity=4).run(unittest.defaultTestLoader.loadTestsFromName(args.name)) + if args.name and args.name.startswith('.'): + tests = find_tests() + ans = None + try: + for suite in tests: + for test in suite._tests: + for s in test: + if s._testMethodName == args.name[1:]: + tests = s + raise StopIteration() + except StopIteration: + pass else: - unittest.TextTestRunner(verbosity=4).run(find_tests()) + tests = unittest.defaultTestLoader.loadTestsFromName(args.name) if args.name else find_tests() + unittest.TextTestRunner(verbosity=4).run(tests) diff --git a/src/calibre/db/tests/reading.py b/src/calibre/db/tests/reading.py index bf691a3b03..979e2e9247 100644 --- a/src/calibre/db/tests/reading.py +++ b/src/calibre/db/tests/reading.py @@ -8,6 +8,7 @@ __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' import datetime +from io import BytesIO from calibre.utils.date import utc_tz from calibre.db.tests.base import BaseTest @@ -205,6 +206,9 @@ class ReadingTest(BaseTest): else: self.assertEqual(cdata, cache.cover(book_id, as_path=True), 'Reading of null cover as path failed') + buf = BytesIO() + self.assertFalse(cache.copy_cover_to(99999, buf), 'copy_cover_to() did not return False for non-existent book_id') + self.assertFalse(cache.copy_cover_to(3, buf), 'copy_cover_to() did not return False for non-existent cover') # }}} @@ -305,6 +309,7 @@ class ReadingTest(BaseTest): def test_get_formats(self): # {{{ 'Test reading ebook formats using the format() method' from calibre.library.database2 import LibraryDatabase2 + from calibre.db.cache import NoSuchFormat old = LibraryDatabase2(self.library_path) ids = old.all_ids() lf = {i:set(old.formats(i, index_is_id=True).split(',')) if old.formats( @@ -332,6 +337,9 @@ class ReadingTest(BaseTest): self.assertEqual(old, f.read(), 'Failed to read format as path') + buf = BytesIO() + self.assertRaises(NoSuchFormat, cache.copy_format_to, 99999, 'X', buf, 'copy_format_to() failed to raise an exception for non-existent book') + self.assertRaises(NoSuchFormat, cache.copy_format_to, 1, 'X', buf, 'copy_format_to() failed to raise an exception for non-existent format') # }}} diff --git a/src/calibre/db/tests/writing.py b/src/calibre/db/tests/writing.py index 127bcd3609..f4fac34a57 100644 --- a/src/calibre/db/tests/writing.py +++ b/src/calibre/db/tests/writing.py @@ -9,6 +9,7 @@ __docformat__ = 'restructuredtext en' from collections import namedtuple from functools import partial +from io import BytesIO from calibre.ebooks.metadata import author_to_author_sort from calibre.utils.date import UNDEFINED_DATE @@ -16,6 +17,7 @@ from calibre.db.tests.base import BaseTest class WritingTest(BaseTest): + # Utils {{{ def create_getter(self, name, getter=None): if getter is None: if name.endswith('_index'): @@ -35,7 +37,7 @@ class WritingTest(BaseTest): ans = lambda db:partial(getattr(db, setter), commit=True) return ans - def create_test(self, name, vals, getter=None, setter=None ): + def create_test(self, name, vals, getter=None, setter=None): T = namedtuple('Test', 'name vals getter setter') return T(name, vals, self.create_getter(name, getter), self.create_setter(name, setter)) @@ -70,8 +72,9 @@ class WritingTest(BaseTest): 'Failed setting for %s, sqlite value not the same: %r != %r'%( test.name, old_sqlite_res, sqlite_res)) del db + # }}} - def test_one_one(self): # {{{ + def test_one_one(self): # {{{ 'Test setting of values in one-one fields' tests = [self.create_test('#yesno', (True, False, 'true', 'false', None))] for name, getter, setter in ( @@ -112,7 +115,7 @@ class WritingTest(BaseTest): self.run_tests(tests) # }}} - def test_many_one_basic(self): # {{{ + def test_many_one_basic(self): # {{{ 'Test the different code paths for writing to a many-one field' cl = self.cloned_library cache = self.init_cache(cl) @@ -199,7 +202,7 @@ class WritingTest(BaseTest): # }}} - def test_many_many_basic(self): # {{{ + def test_many_many_basic(self): # {{{ 'Test the different code paths for writing to a many-many field' cl = self.cloned_library cache = self.init_cache(cl) @@ -289,6 +292,67 @@ class WritingTest(BaseTest): ae(c.field_for('sort', 1), 'Moose, The') ae(c.field_for('sort', 2), 'Cat') - # }}} + def test_dirtied(self): # {{{ + 'Test the setting of the dirtied flag and the last_modified column' + cl = self.cloned_library + cache = self.init_cache(cl) + ae, af, sf = self.assertEqual, self.assertFalse, cache.set_field + # First empty dirtied + cache.dump_metadata() + af(cache.dirtied_cache) + af(self.init_cache(cl).dirtied_cache) + + prev = cache.field_for('last_modified', 3) + import calibre.db.cache as c + from datetime import timedelta + utime = prev+timedelta(days=1) + onowf = c.nowf + c.nowf = lambda: utime + try: + ae(sf('title', {3:'xxx'}), set([3])) + self.assertTrue(3 in cache.dirtied_cache) + ae(cache.field_for('last_modified', 3), utime) + cache.dump_metadata() + raw = cache.read_backup(3) + from calibre.ebooks.metadata.opf2 import OPF + opf = OPF(BytesIO(raw)) + ae(opf.title, 'xxx') + finally: + c.nowf = onowf + # }}} + + def test_backup(self): # {{{ + 'Test the automatic backup of changed metadata' + cl = self.cloned_library + cache = self.init_cache(cl) + ae, af, sf, ff = self.assertEqual, self.assertFalse, cache.set_field, cache.field_for + # First empty dirtied + cache.dump_metadata() + af(cache.dirtied_cache) + from calibre.db.backup import MetadataBackup + interval = 0.01 + mb = MetadataBackup(cache, interval=interval, scheduling_interval=0) + mb.start() + try: + ae(sf('title', {1:'title1', 2:'title2', 3:'title3'}), {1,2,3}) + ae(sf('authors', {1:'author1 & author2', 2:'author1 & author2', 3:'author1 & author2'}), {1,2,3}) + count = 6 + while cache.dirty_queue_length() and count > 0: + mb.join(interval) + count -= 1 + af(cache.dirty_queue_length()) + finally: + mb.stop() + mb.join(interval) + af(mb.is_alive()) + from calibre.ebooks.metadata.opf2 import OPF + for book_id in (1, 2, 3): + raw = cache.read_backup(book_id) + opf = OPF(BytesIO(raw)) + ae(opf.title, 'title%d'%book_id) + ae(opf.authors, ['author1', 'author2']) + # }}} + + diff --git a/src/calibre/db/view.py b/src/calibre/db/view.py index e9de69e320..633fc6d9f9 100644 --- a/src/calibre/db/view.py +++ b/src/calibre/db/view.py @@ -7,7 +7,9 @@ __license__ = 'GPL v3' __copyright__ = '2011, Kovid Goyal ' __docformat__ = 'restructuredtext en' +import weakref from functools import partial +from itertools import izip, imap def sanitize_sort_field_name(field_metadata, field): field = field_metadata.search_term_to_field_key(field.lower().strip()) @@ -15,11 +17,39 @@ def sanitize_sort_field_name(field_metadata, field): field = {'title': 'sort', 'authors':'author_sort'}.get(field, field) return field +class MarkedVirtualField(object): + + def __init__(self, marked_ids): + self.marked_ids = marked_ids + + def iter_searchable_values(self, get_metadata, candidates, default_value=None): + for book_id in candidates: + yield self.marked_ids.get(book_id, default_value), {book_id} + +class TableRow(list): + + def __init__(self, book_id, view): + self.book_id = book_id + self.view = weakref.ref(view) + + def __getitem__(self, obj): + view = self.view() + if isinstance(obj, slice): + return [view._field_getters[c](self.book_id) + for c in xrange(*obj.indices(len(view._field_getters)))] + else: + return view._field_getters[obj](self.book_id) + class View(object): + ''' A table view of the database, with rows and columns. Also supports + filtering and sorting. ''' + def __init__(self, cache): self.cache = cache self.marked_ids = {} + self.search_restriction_book_count = 0 + self.search_restriction = '' self._field_getters = {} for col, idx in cache.backend.FIELD_MAP.iteritems(): if isinstance(col, int): @@ -30,24 +60,41 @@ class View(object): else: try: self._field_getters[idx] = { - 'id' : self._get_id, - 'au_map' : self.get_author_data, + 'id': self._get_id, + 'au_map': self.get_author_data, 'ondevice': self.get_ondevice, - 'marked' : self.get_marked, + 'marked': self.get_marked, }[col] except KeyError: self._field_getters[idx] = partial(self.get, col) - self._map = list(self.cache.all_book_ids()) - self._map_filtered = list(self._map) + self._map = tuple(self.cache.all_book_ids()) + self._map_filtered = tuple(self._map) @property def field_metadata(self): return self.cache.field_metadata def _get_id(self, idx, index_is_id=True): - ans = idx if index_is_id else self.index_to_id(idx) - return ans + return idx if index_is_id else self.index_to_id(idx) + + def __getitem__(self, row): + return TableRow(self._map_filtered[row], self.cache) + + def __len__(self): + return len(self._map_filtered) + + def __iter__(self): + for book_id in self._map_filtered: + yield self._data[book_id] + + def iterall(self): + for book_id in self._map: + yield self[book_id] + + def iterallids(self): + for book_id in self._map: + yield book_id def get_field_map_field(self, row, col, index_is_id=True): ''' @@ -66,7 +113,7 @@ class View(object): def get_ondevice(self, idx, index_is_id=True, default_value=''): id_ = idx if index_is_id else self.index_to_id(idx) - self.cache.field_for('ondevice', id_, default_value=default_value) + return self.cache.field_for('ondevice', id_, default_value=default_value) def get_marked(self, idx, index_is_id=True, default_value=None): id_ = idx if index_is_id else self.index_to_id(idx) @@ -93,7 +140,7 @@ class View(object): ans.append(self.cache._author_data(id_)) return tuple(ans) - def multisort(self, fields=[], subsort=False): + def multisort(self, fields=[], subsort=False, only_ids=None): fields = [(sanitize_sort_field_name(self.field_metadata, x), bool(y)) for x, y in fields] keys = self.field_metadata.sortable_field_keys() fields = [x for x in fields if x[0] in keys] @@ -102,8 +149,70 @@ class View(object): if not fields: fields = [('timestamp', False)] - sorted_book_ids = self.cache.multisort(fields) - sorted_book_ids - # TODO: change maps + sorted_book_ids = self.cache.multisort(fields, ids_to_sort=only_ids) + if only_ids is None: + self._map = tuple(sorted_book_ids) + if len(self._map_filtered) == len(self._map): + self._map_filtered = tuple(self._map) + else: + fids = frozenset(self._map_filtered) + self._map_filtered = tuple(i for i in self._map if i in fids) + else: + smap = {book_id:i for i, book_id in enumerate(sorted_book_ids)} + only_ids.sort(key=smap.get) + def search(self, query, return_matches=False): + ans = self.search_getting_ids(query, self.search_restriction, + set_restriction_count=True) + if return_matches: + return ans + self._map_filtered = tuple(ans) + + def search_getting_ids(self, query, search_restriction, + set_restriction_count=False): + q = '' + if not query or not query.strip(): + q = search_restriction + else: + q = query + if search_restriction: + q = u'(%s) and (%s)' % (search_restriction, query) + if not q: + if set_restriction_count: + self.search_restriction_book_count = len(self._map) + return list(self._map) + matches = self.cache.search( + query, search_restriction, virtual_fields={'marked':MarkedVirtualField(self.marked_ids)}) + rv = [x for x in self._map if x in matches] + if set_restriction_count and q == search_restriction: + self.search_restriction_book_count = len(rv) + return rv + + def set_search_restriction(self, s): + self.search_restriction = s + + def search_restriction_applied(self): + return bool(self.search_restriction) + + def get_search_restriction_book_count(self): + return self.search_restriction_book_count + + def set_marked_ids(self, id_dict): + ''' + ids in id_dict are "marked". They can be searched for by + using the search term ``marked:true``. Pass in an empty dictionary or + set to clear marked ids. + + :param id_dict: Either a dictionary mapping ids to values or a set + of ids. In the latter case, the value is set to 'true' for all ids. If + a mapping is provided, then the search can be used to search for + particular values: ``marked:value`` + ''' + if not hasattr(id_dict, 'items'): + # Simple list. Make it a dict of string 'true' + self.marked_ids = dict.fromkeys(id_dict, u'true') + else: + # Ensure that all the items in the dict are text + self.marked_ids = dict(izip(id_dict.iterkeys(), imap(unicode, + id_dict.itervalues()))) diff --git a/src/calibre/db/write.py b/src/calibre/db/write.py index 29a27e16bf..87e7179661 100644 --- a/src/calibre/db/write.py +++ b/src/calibre/db/write.py @@ -417,7 +417,7 @@ def many_many(book_id_val_map, db, field, allow_case_change, *args): # }}} -def identifiers(book_id_val_map, db, field, *args): # {{{ +def identifiers(book_id_val_map, db, field, *args): # {{{ table = field.table updates = set() for book_id, identifiers in book_id_val_map.iteritems(): diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index 95a00a315c..36ab076417 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -239,7 +239,7 @@ class ANDROID(USBMS): 'ADVANCED', 'SGH-I727', 'USB_FLASH_DRIVER', 'ANDROID', 'S5830I_CARD', 'MID7042', 'LINK-CREATE', '7035', 'VIEWPAD_7E', 'NOVO7', 'MB526', '_USB#WYK7MSF8KE', 'TABLET_PC', 'F', 'MT65XX_MS', - 'ICS', 'E400', '__FILE-STOR_GADG', 'ST80208-1'] + 'ICS', 'E400', '__FILE-STOR_GADG', 'ST80208-1', 'GT-S5660M_CARD'] WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897', 'FILE-STOR_GADGET', 'SGH-T959_CARD', 'SGH-T959', 'SAMSUNG_ANDROID', 'GT-P1000_CARD', 'A70S', 'A101IT', '7', 'INCREDIBLE', 'A7EB', 'SGH-T849_CARD', diff --git a/src/calibre/devices/misc.py b/src/calibre/devices/misc.py index 423b68f37b..f033fb9a2f 100644 --- a/src/calibre/devices/misc.py +++ b/src/calibre/devices/misc.py @@ -24,11 +24,11 @@ class PALMPRE(USBMS): FORMATS = ['epub', 'mobi', 'prc', 'pdb', 'txt'] VENDOR_ID = [0x0830] - PRODUCT_ID = [0x8004, 0x8002, 0x0101] + PRODUCT_ID = [0x8004, 0x8002, 0x0101, 0x8042] BCD = [0x0316] VENDOR_NAME = 'PALM' - WINDOWS_MAIN_MEM = 'PRE' + WINDOWS_MAIN_MEM = ['PRE', 'PALM_DEVICE'] EBOOK_DIR_MAIN = 'E-books' diff --git a/src/calibre/devices/nook/driver.py b/src/calibre/devices/nook/driver.py index 54f9151e4e..180d56be77 100644 --- a/src/calibre/devices/nook/driver.py +++ b/src/calibre/devices/nook/driver.py @@ -82,6 +82,7 @@ class NOOK(USBMS): return [x.replace('#', '_') for x in components] class NOOK_COLOR(NOOK): + name = 'Nook Color Device Interface' description = _('Communicate with the Nook Color, TSR and Tablet eBook readers.') PRODUCT_ID = [0x002, 0x003, 0x004] diff --git a/src/calibre/ebooks/conversion/plugins/pdf_output.py b/src/calibre/ebooks/conversion/plugins/pdf_output.py index c473931aef..dc943eec30 100644 --- a/src/calibre/ebooks/conversion/plugins/pdf_output.py +++ b/src/calibre/ebooks/conversion/plugins/pdf_output.py @@ -104,13 +104,11 @@ class PDFOutput(OutputFormatPlugin): 'specify a footer template, it will take precedence ' 'over this option.')), OptionRecommendation(name='pdf_footer_template', recommended_value=None, - help=_('An HTML template used to generate footers on every page.' - ' The string _PAGENUM_ will be replaced by the current page' - ' number.')), + help=_('An HTML template used to generate %s on every page.' + ' The strings _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_ will be replaced by their current values.')%_('footers')), OptionRecommendation(name='pdf_header_template', recommended_value=None, - help=_('An HTML template used to generate headers on every page.' - ' The string _PAGENUM_ will be replaced by the current page' - ' number.')), + help=_('An HTML template used to generate %s on every page.' + ' The strings _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_ will be replaced by their current values.')%_('headers')), ]) def convert(self, oeb_book, output_path, input_plugin, opts, log): diff --git a/src/calibre/ebooks/conversion/plugins/txt_input.py b/src/calibre/ebooks/conversion/plugins/txt_input.py index e916b30c29..50f1409ea6 100644 --- a/src/calibre/ebooks/conversion/plugins/txt_input.py +++ b/src/calibre/ebooks/conversion/plugins/txt_input.py @@ -97,6 +97,12 @@ class TXTInput(InputFormatPlugin): if not ienc: ienc = 'utf-8' log.debug('No input encoding specified and could not auto detect using %s' % ienc) + # Remove BOM from start of txt as its presence can confuse markdown + import codecs + for bom in (codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE, codecs.BOM_UTF8, codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE): + if txt.startswith(bom): + txt = txt[len(bom):] + break txt = txt.decode(ienc, 'replace') # Replace entities diff --git a/src/calibre/ebooks/metadata/sources/amazon.py b/src/calibre/ebooks/metadata/sources/amazon.py index a8e15a6d94..4509608135 100644 --- a/src/calibre/ebooks/metadata/sources/amazon.py +++ b/src/calibre/ebooks/metadata/sources/amazon.py @@ -21,7 +21,7 @@ from calibre.ebooks.metadata.book.base import Metadata from calibre.utils.date import parse_only_date from calibre.utils.localization import canonicalize_lang -class Worker(Thread): # Get details {{{ +class Worker(Thread): # Get details {{{ ''' Get book details from amazons book page in a separate thread @@ -43,12 +43,12 @@ class Worker(Thread): # Get details {{{ months = { 'de': { - 1 : ['jän'], - 2 : ['februar'], - 3 : ['märz'], - 5 : ['mai'], - 6 : ['juni'], - 7 : ['juli'], + 1: ['jän'], + 2: ['februar'], + 3: ['märz'], + 5: ['mai'], + 6: ['juni'], + 7: ['juli'], 10: ['okt'], 12: ['dez'] }, @@ -132,7 +132,7 @@ class Worker(Thread): # Get details {{{ text()="Détails sur le produit" or \ text()="Detalles del producto" or \ text()="Detalhes do produto" or \ - text()="登録情報"]/../div[@class="content"] + starts-with(text(), "登録情報")]/../div[@class="content"] ''' # Editor: is for Spanish self.publisher_xpath = ''' @@ -235,6 +235,12 @@ class Worker(Thread): # Get details {{{ msg = 'Failed to parse amazon details page: %r'%self.url self.log.exception(msg) return + if self.domain == 'jp': + for a in root.xpath('//a[@href]'): + if 'black-curtain-redirect.html' in a.get('href'): + self.url = 'http://amazon.co.jp'+a.get('href') + self.log('Black curtain redirect found, following') + return self.get_details() errmsg = root.xpath('//*[@id="errorMessage"]') if errmsg: @@ -252,8 +258,8 @@ class Worker(Thread): # Get details {{{ self.log.exception('Error parsing asin for url: %r'%self.url) asin = None if self.testing: - import tempfile - with tempfile.NamedTemporaryFile(prefix=asin + '_', + import tempfile, uuid + with tempfile.NamedTemporaryFile(prefix=(asin or str(uuid.uuid4()))+ '_', suffix='.html', delete=False) as f: f.write(raw) print ('Downloaded html for', asin, 'saved in', f.name) @@ -270,7 +276,6 @@ class Worker(Thread): # Get details {{{ self.log.exception('Error parsing authors for url: %r'%self.url) authors = [] - if not title or not authors or not asin: self.log.error('Could not find title/authors/asin for %r'%self.url) self.log.error('ASIN: %r Title: %r Authors: %r'%(asin, title, @@ -425,7 +430,6 @@ class Worker(Thread): # Get details {{{ desc = re.sub(r'(?s)', '', desc) return sanitize_comments_html(desc) - def parse_comments(self, root): ans = '' desc = root.xpath('//div[@id="ps-content"]/div[@class="content"]') @@ -499,7 +503,7 @@ class Worker(Thread): # Get details {{{ def parse_language(self, pd): for x in reversed(pd.xpath(self.language_xpath)): if x.tail: - raw = x.tail.strip() + raw = x.tail.strip().partition(',')[0].strip() ans = self.lang_map.get(raw, None) if ans: return ans @@ -522,13 +526,13 @@ class Amazon(Source): AMAZON_DOMAINS = { 'com': _('US'), - 'fr' : _('France'), - 'de' : _('Germany'), - 'uk' : _('UK'), - 'it' : _('Italy'), - 'jp' : _('Japan'), - 'es' : _('Spain'), - 'br' : _('Brazil'), + 'fr': _('France'), + 'de': _('Germany'), + 'uk': _('UK'), + 'it': _('Italy'), + 'jp': _('Japan'), + 'es': _('Spain'), + 'br': _('Brazil'), } options = ( @@ -586,7 +590,7 @@ class Amazon(Source): return domain, val return None, None - def get_book_url(self, identifiers): # {{{ + def get_book_url(self, identifiers): # {{{ domain, asin = self.get_domain_and_asin(identifiers) if domain and asin: url = None @@ -631,8 +635,7 @@ class Amazon(Source): mi.tags = list(map(fixcase, mi.tags)) mi.isbn = check_isbn(mi.isbn) - - def create_query(self, log, title=None, authors=None, identifiers={}, # {{{ + def create_query(self, log, title=None, authors=None, identifiers={}, # {{{ domain=None): if domain is None: domain = self.domain @@ -642,8 +645,8 @@ class Amazon(Source): domain = idomain # See the amazon detailed search page to get all options - q = { 'search-alias' : 'aps', - 'unfiltered' : '1', + q = {'search-alias': 'aps', + 'unfiltered': '1', } if domain == 'com': @@ -698,7 +701,7 @@ class Amazon(Source): # }}} - def get_cached_cover_url(self, identifiers): # {{{ + def get_cached_cover_url(self, identifiers): # {{{ url = None domain, asin = self.get_domain_and_asin(identifiers) if asin is None: @@ -711,14 +714,17 @@ class Amazon(Source): return url # }}} - def parse_results_page(self, root): # {{{ + def parse_results_page(self, root): # {{{ from lxml.html import tostring matches = [] def title_ok(title): title = title.lower() - for x in ('bulk pack', '[audiobook]', '[audio cd]'): + bad = ['bulk pack', '[audiobook]', '[audio cd]'] + if self.domain == 'com': + bad.append('(spanish edition)') + for x in bad: if x in title: return False return True @@ -745,13 +751,12 @@ class Amazon(Source): matches.append(a.get('href')) break - # Keep only the top 5 matches as the matches are sorted by relevance by # Amazon so lower matches are not likely to be very relevant return matches[:5] # }}} - def identify(self, log, result_queue, abort, title=None, authors=None, # {{{ + def identify(self, log, result_queue, abort, title=None, authors=None, # {{{ identifiers={}, timeout=30): ''' Note this method will retry without identifiers automatically if no @@ -789,7 +794,6 @@ class Amazon(Source): log.exception(msg) return as_unicode(msg) - raw = clean_ascii_chars(xml_to_unicode(raw, strip_encoding_pats=True, resolve_entities=True)[0]) @@ -819,7 +823,6 @@ class Amazon(Source): # The error is almost always a not found error found = False - if found: matches = self.parse_results_page(root) @@ -857,8 +860,8 @@ class Amazon(Source): return None # }}} - def download_cover(self, log, result_queue, abort, # {{{ - title=None, authors=None, identifiers={}, timeout=30): + def download_cover(self, log, result_queue, abort, # {{{ + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): cached_url = self.get_cached_cover_url(identifiers) if cached_url is None: log.info('No cached cover found, running identify') @@ -894,39 +897,44 @@ class Amazon(Source): log.exception('Failed to download cover from:', cached_url) # }}} -if __name__ == '__main__': # tests {{{ +if __name__ == '__main__': # tests {{{ # To run these test use: calibre-debug -e # src/calibre/ebooks/metadata/sources/amazon.py from calibre.ebooks.metadata.sources.test import (test_identify_plugin, isbn_test, title_test, authors_test, comments_test, series_test) - com_tests = [ # {{{ + com_tests = [ # {{{ - ( # + in title and uses id="main-image" for cover + ( # Has a spanish edition + {'title':'11/22/63'}, + [title_test('11/22/63: A Novel', exact=True), authors_test(['Stephen King']),] + ), + + ( # + in title and uses id="main-image" for cover {'title':'C++ Concurrency in Action'}, [title_test('C++ Concurrency in Action: Practical Multithreading', exact=True), ] ), - ( # Series + ( # Series {'identifiers':{'amazon':'0756407117'}}, [title_test( - "Throne of the Crescent Moon" - , exact=True), series_test('Crescent Moon Kingdoms', 1), + "Throne of the Crescent Moon", + exact=True), series_test('Crescent Moon Kingdoms', 1), comments_test('Makhslood'), ] ), - ( # Different comments markup, using Book Description section + ( # Different comments markup, using Book Description section {'identifiers':{'amazon':'0982514506'}}, [title_test( - "Griffin's Destiny: Book Three: The Griffin's Daughter Trilogy" - , exact=True), + "Griffin's Destiny: Book Three: The Griffin's Daughter Trilogy", + exact=True), comments_test('Jelena'), comments_test('Leslie'), ] ), - ( # # in title + ( # # in title {'title':'Expert C# 2008 Business Objects', 'authors':['Lhotka']}, [title_test('Expert C# 2008 Business Objects', exact=True), @@ -942,13 +950,13 @@ if __name__ == '__main__': # tests {{{ ), - ( # Sophisticated comment formatting + ( # Sophisticated comment formatting {'identifiers':{'isbn': '9781416580829'}}, [title_test('Angels & Demons - Movie Tie-In: A Novel', exact=True), authors_test(['Dan Brown'])] ), - ( # No specific problems + ( # No specific problems {'identifiers':{'isbn': '0743273567'}}, [title_test('The great gatsby', exact=True), authors_test(['F. Scott Fitzgerald'])] @@ -961,9 +969,9 @@ if __name__ == '__main__': # tests {{{ ), - ] # }}} + ] # }}} - de_tests = [ # {{{ + de_tests = [ # {{{ ( {'identifiers':{'isbn': '3548283519'}}, [title_test('Wer Wind Sät: Der Fünfte Fall Für Bodenstein Und Kirchhoff', @@ -971,9 +979,9 @@ if __name__ == '__main__': # tests {{{ ] ), - ] # }}} + ] # }}} - it_tests = [ # {{{ + it_tests = [ # {{{ ( {'identifiers':{'isbn': '8838922195'}}, [title_test('La briscola in cinque', @@ -981,9 +989,9 @@ if __name__ == '__main__': # tests {{{ ] ), - ] # }}} + ] # }}} - fr_tests = [ # {{{ + fr_tests = [ # {{{ ( {'identifiers':{'isbn': '2221116798'}}, [title_test('L\'étrange voyage de Monsieur Daldry', @@ -991,9 +999,9 @@ if __name__ == '__main__': # tests {{{ ] ), - ] # }}} + ] # }}} - es_tests = [ # {{{ + es_tests = [ # {{{ ( {'identifiers':{'isbn': '8483460831'}}, [title_test('Tiempos Interesantes', @@ -1001,23 +1009,28 @@ if __name__ == '__main__': # tests {{{ ] ), - ] # }}} + ] # }}} - jp_tests = [ # {{{ - ( # isbn -> title, authors - {'identifiers':{'isbn': '9784101302720' }}, + jp_tests = [ # {{{ + ( # Adult filtering test + {'identifiers':{'isbn':'4799500066'}}, + [title_test(u'Bitch Trap'),] + ), + + ( # isbn -> title, authors + {'identifiers':{'isbn': '9784101302720'}}, [title_test(u'精霊の守り人', exact=True), authors_test([u'上橋 菜穂子']) ] ), - ( # title, authors -> isbn (will use Shift_JIS encoding in query.) + ( # title, authors -> isbn (will use Shift_JIS encoding in query.) {'title': u'考えない練習', 'authors': [u'小池 龍之介']}, [isbn_test('9784093881067'), ] ), - ] # }}} + ] # }}} - br_tests = [ # {{{ + br_tests = [ # {{{ ( {'title':'Guerra dos Tronos'}, [title_test('A Guerra dos Tronos - As Crônicas de Gelo e Fogo', @@ -1025,7 +1038,7 @@ if __name__ == '__main__': # tests {{{ ] ), - ] # }}} + ] # }}} def do_test(domain, start=0, stop=None): tests = globals().get(domain+'_tests') diff --git a/src/calibre/ebooks/metadata/sources/base.py b/src/calibre/ebooks/metadata/sources/base.py index e15d11c3c1..13069eb86f 100644 --- a/src/calibre/ebooks/metadata/sources/base.py +++ b/src/calibre/ebooks/metadata/sources/base.py @@ -31,7 +31,7 @@ msprefs.defaults['find_first_edition_date'] = False # Google covers are often poor quality (scans/errors) but they have high # resolution, so they trump covers from better sources. So make sure they # are only used if no other covers are found. -msprefs.defaults['cover_priorities'] = {'Google':2} +msprefs.defaults['cover_priorities'] = {'Google':2, 'Google Images':2, 'Big Book Search':2} def create_log(ostream=None): from calibre.utils.logging import ThreadSafeLog, FileStream @@ -222,6 +222,9 @@ class Source(Plugin): #: plugin config_help_message = None + #: If True this source can return multiple covers for a given query + can_get_multiple_covers = False + def __init__(self, *args, **kwargs): Plugin.__init__(self, *args, **kwargs) @@ -426,6 +429,40 @@ class Source(Plugin): mi.tags = list(map(fixcase, mi.tags)) mi.isbn = check_isbn(mi.isbn) + def download_multiple_covers(self, title, authors, urls, get_best_cover, timeout, result_queue, abort, log, prefs_name='max_covers'): + if not urls: + log('No images found for, title: %r and authors: %r'%(title, authors)) + return + from threading import Thread + import time + if prefs_name: + urls = urls[:self.prefs[prefs_name]] + if get_best_cover: + urls = urls[:1] + log('Downloading %d covers'%len(urls)) + workers = [Thread(target=self.download_image, args=(u, timeout, log, result_queue)) for u in urls] + for w in workers: + w.daemon = True + w.start() + alive = True + start_time = time.time() + while alive and not abort.is_set() and time.time() - start_time < timeout: + alive = False + for w in workers: + if w.is_alive(): + alive = True + break + abort.wait(0.1) + + def download_image(self, url, timeout, log, result_queue): + try: + ans = self.browser.open_novisit(url, timeout=timeout).read() + result_queue.put((self, ans)) + log('Downloaded cover from: %s'%url) + except Exception: + self.log.exception('Failed to download cover from: %r'%url) + + # }}} # Metadata API {{{ @@ -522,7 +559,7 @@ class Source(Plugin): return None def download_cover(self, log, result_queue, abort, - title=None, authors=None, identifiers={}, timeout=30): + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): ''' Download a cover and put it into result_queue. The parameters all have the same meaning as for :meth:`identify`. Put (self, cover_data) into @@ -531,6 +568,9 @@ class Source(Plugin): This method should use cached cover URLs for efficiency whenever possible. When cached data is not present, most plugins simply call identify and use its results. + + If the parameter get_best_cover is True and this plugin can get + multiple covers, it should only get the "best" one. ''' pass diff --git a/src/calibre/ebooks/metadata/sources/big_book_search.py b/src/calibre/ebooks/metadata/sources/big_book_search.py new file mode 100644 index 0000000000..789ef1c1aa --- /dev/null +++ b/src/calibre/ebooks/metadata/sources/big_book_search.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8 +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2013, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from calibre.ebooks.metadata.sources.base import Source, Option + +def get_urls(br, tokens): + from urllib import quote_plus + from mechanize import Request + from lxml import html + escaped = [quote_plus(x.encode('utf-8')) for x in tokens if x and x.strip()] + q = b'+'.join(escaped) + url = 'http://bigbooksearch.com/books/'+q + br.open(url).read() + req = Request('http://bigbooksearch.com/query.php?SearchIndex=books&Keywords=%s&ItemPage=1'%q) + req.add_header('X-Requested-With', 'XMLHttpRequest') + req.add_header('Referer', url) + raw = br.open(req).read() + root = html.fromstring(raw.decode('utf-8')) + urls = [i.get('src') for i in root.xpath('//img[@src]')] + return urls + +class BigBookSearch(Source): + + name = 'Big Book Search' + description = _('Downloads multiple book covers from Amazon. Useful to find alternate covers.') + capabilities = frozenset(['cover']) + config_help_message = _('Configure the Big Book Search plugin') + can_get_multiple_covers = True + options = (Option('max_covers', 'number', 5, _('Maximum number of covers to get'), + _('The maximum number of covers to process from the search result')), + ) + supports_gzip_transfer_encoding = True + + def download_cover(self, log, result_queue, abort, + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): + if not title: + return + br = self.browser + tokens = tuple(self.get_title_tokens(title)) + tuple(self.get_author_tokens(authors)) + urls = get_urls(br, tokens) + self.download_multiple_covers(title, authors, urls, get_best_cover, timeout, result_queue, abort, log) + +def test(): + from calibre import browser + import pprint + br = browser() + urls = get_urls(br, ['consider', 'phlebas', 'banks']) + pprint.pprint(urls) + +if __name__ == '__main__': + test() + diff --git a/src/calibre/ebooks/metadata/sources/covers.py b/src/calibre/ebooks/metadata/sources/covers.py index d28ce146c6..2df716253b 100644 --- a/src/calibre/ebooks/metadata/sources/covers.py +++ b/src/calibre/ebooks/metadata/sources/covers.py @@ -18,12 +18,13 @@ from calibre.utils.magick.draw import Image, save_cover_data_to class Worker(Thread): - def __init__(self, plugin, abort, title, authors, identifiers, timeout, rq): + def __init__(self, plugin, abort, title, authors, identifiers, timeout, rq, get_best_cover=False): Thread.__init__(self) self.daemon = True self.plugin = plugin self.abort = abort + self.get_best_cover = get_best_cover self.buf = BytesIO() self.log = create_log(self.buf) self.title, self.authors, self.identifiers = (title, authors, @@ -35,9 +36,14 @@ class Worker(Thread): start_time = time.time() if not self.abort.is_set(): try: - self.plugin.download_cover(self.log, self.rq, self.abort, - title=self.title, authors=self.authors, - identifiers=self.identifiers, timeout=self.timeout) + if self.plugin.can_get_multiple_covers: + self.plugin.download_cover(self.log, self.rq, self.abort, + title=self.title, authors=self.authors, get_best_cover=self.get_best_cover, + identifiers=self.identifiers, timeout=self.timeout) + else: + self.plugin.download_cover(self.log, self.rq, self.abort, + title=self.title, authors=self.authors, + identifiers=self.identifiers, timeout=self.timeout) except: self.log.exception('Failed to download cover from', self.plugin.name) @@ -67,7 +73,7 @@ def process_result(log, result): return (plugin, width, height, fmt, data) def run_download(log, results, abort, - title=None, authors=None, identifiers={}, timeout=30): + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): ''' Run the cover download, putting results into the queue :param:`results`. @@ -84,7 +90,7 @@ def run_download(log, results, abort, plugins = [p for p in metadata_plugins(['cover']) if p.is_configured()] rq = Queue() - workers = [Worker(p, abort, title, authors, identifiers, timeout, rq) for p + workers = [Worker(p, abort, title, authors, identifiers, timeout, rq, get_best_cover=get_best_cover) for p in plugins] for w in workers: w.start() @@ -158,7 +164,7 @@ def download_cover(log, abort = Event() run_download(log, rq, abort, title=title, authors=authors, - identifiers=identifiers, timeout=timeout) + identifiers=identifiers, timeout=timeout, get_best_cover=True) results = [] diff --git a/src/calibre/ebooks/metadata/sources/douban.py b/src/calibre/ebooks/metadata/sources/douban.py index 6857d62d4d..f955fb8a79 100644 --- a/src/calibre/ebooks/metadata/sources/douban.py +++ b/src/calibre/ebooks/metadata/sources/douban.py @@ -221,7 +221,7 @@ class Douban(Source): # }}} def download_cover(self, log, result_queue, abort, # {{{ - title=None, authors=None, identifiers={}, timeout=30): + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): cached_url = self.get_cached_cover_url(identifiers) if cached_url is None: log.info('No cached cover found, running identify') diff --git a/src/calibre/ebooks/metadata/sources/edelweiss.py b/src/calibre/ebooks/metadata/sources/edelweiss.py index c86f16ff0d..27fd296503 100644 --- a/src/calibre/ebooks/metadata/sources/edelweiss.py +++ b/src/calibre/ebooks/metadata/sources/edelweiss.py @@ -106,6 +106,8 @@ class Worker(Thread): # {{{ parts = pub.partition(':')[0::2] pub = parts[1] or parts[0] try: + if ', Ship Date:' in pub: + pub = pub.partition(', Ship Date:')[0] q = parse_only_date(pub, assume_utc=True) if q.year != UNDEFINED_DATE: mi.pubdate = q @@ -320,7 +322,7 @@ class Edelweiss(Source): # }}} def download_cover(self, log, result_queue, abort, # {{{ - title=None, authors=None, identifiers={}, timeout=30): + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): cached_url = self.get_cached_cover_url(identifiers) if cached_url is None: log.info('No cached cover found, running identify') diff --git a/src/calibre/ebooks/metadata/sources/google.py b/src/calibre/ebooks/metadata/sources/google.py index 3962afcb5e..c03f20cd6b 100644 --- a/src/calibre/ebooks/metadata/sources/google.py +++ b/src/calibre/ebooks/metadata/sources/google.py @@ -209,7 +209,7 @@ class GoogleBooks(Source): # }}} def download_cover(self, log, result_queue, abort, # {{{ - title=None, authors=None, identifiers={}, timeout=30): + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): cached_url = self.get_cached_cover_url(identifiers) if cached_url is None: log.info('No cached cover found, running identify') diff --git a/src/calibre/ebooks/metadata/sources/google_images.py b/src/calibre/ebooks/metadata/sources/google_images.py new file mode 100644 index 0000000000..0563417bac --- /dev/null +++ b/src/calibre/ebooks/metadata/sources/google_images.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8 +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2013, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from collections import OrderedDict + +from calibre import as_unicode +from calibre.ebooks.metadata.sources.base import Source, Option + +class GoogleImages(Source): + + name = 'Google Images' + description = _('Downloads covers from a Google Image search. Useful to find larger/alternate covers.') + capabilities = frozenset(['cover']) + config_help_message = _('Configure the Google Image Search plugin') + can_get_multiple_covers = True + options = (Option('max_covers', 'number', 5, _('Maximum number of covers to get'), + _('The maximum number of covers to process from the google search result')), + Option('size', 'choices', 'svga', _('Cover size'), + _('Search for covers larger than the specified size'), + choices=OrderedDict(( + ('any', _('Any size'),), + ('l', _('Large'),), + ('qsvga', _('Larger than %s')%'400x300',), + ('vga', _('Larger than %s')%'640x480',), + ('svga', _('Larger than %s')%'600x800',), + ('xga', _('Larger than %s')%'1024x768',), + ('2mp', _('Larger than %s')%'2 MP',), + ('4mp', _('Larger than %s')%'4 MP',), + ))), + ) + + def download_cover(self, log, result_queue, abort, + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): + if not title: + return + timeout = max(60, timeout) # Needs at least a minute + title = ' '.join(self.get_title_tokens(title)) + author = ' '.join(self.get_author_tokens(authors)) + urls = self.get_image_urls(title, author, log, abort, timeout) + self.download_multiple_covers(title, authors, urls, get_best_cover, timeout, result_queue, abort, log) + + def get_image_urls(self, title, author, log, abort, timeout): + from calibre.utils.ipc.simple_worker import fork_job, WorkerError + try: + return fork_job('calibre.ebooks.metadata.sources.google_images', + 'search', args=(title, author, self.prefs['size'], timeout), no_output=True, abort=abort, timeout=timeout)['result'] + except WorkerError as e: + if e.orig_tb: + log.error(e.orig_tb) + log.exception('Searching google failed:' + as_unicode(e)) + except Exception as e: + log.exception('Searching google failed:' + as_unicode(e)) + + return [] + +USER_AGENT = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101210 Firefox/3.6.13' + +def find_image_urls(br, ans): + import urlparse + for w in br.page.mainFrame().documentElement().findAll('.images_table a[href]'): + try: + imgurl = urlparse.parse_qs(urlparse.urlparse(unicode(w.attribute('href'))).query)['imgurl'][0] + except: + continue + if imgurl not in ans: + ans.append(imgurl) + +def search(title, author, size, timeout, debug=False): + import time + from calibre.web.jsbrowser.browser import Browser, LoadWatcher, Timeout + ans = [] + start_time = time.time() + br = Browser(user_agent=USER_AGENT, enable_developer_tools=debug) + br.visit('https://www.google.com/advanced_image_search') + f = br.select_form('form[action="/search"]') + f['as_q'] = '%s %s'%(title, author) + if size != 'any': + f['imgsz'] = size + f['imgar'] = 't|xt' + f['as_filetype'] = 'jpg' + br.submit(wait_for_load=False) + + # Loop until the page finishes loading or at least five image urls are + # found + lw = LoadWatcher(br.page, br) + while lw.is_loading and len(ans) < 5: + br.run_for_a_time(0.2) + find_image_urls(br, ans) + if time.time() - start_time > timeout: + raise Timeout('Timed out trying to load google image search page') + find_image_urls(br, ans) + if debug: + br.show_browser() + br.close() + del br # Needed to prevent PyQt from segfaulting + return ans + +def test_google(): + import pprint + pprint.pprint(search('heroes', 'abercrombie', 'svga', 60, debug=True)) + +def test(): + from Queue import Queue + from threading import Event + from calibre.utils.logging import default_log + p = GoogleImages(None) + rq = Queue() + p.download_cover(default_log, rq, Event(), title='The Heroes', + authors=('Joe Abercrombie',)) + print ('Downloaded', rq.qsize(), 'covers') + +if __name__ == '__main__': + test() + diff --git a/src/calibre/ebooks/metadata/sources/openlibrary.py b/src/calibre/ebooks/metadata/sources/openlibrary.py index 4645d2a18a..b0eeb940a5 100644 --- a/src/calibre/ebooks/metadata/sources/openlibrary.py +++ b/src/calibre/ebooks/metadata/sources/openlibrary.py @@ -19,7 +19,7 @@ class OpenLibrary(Source): OPENLIBRARY = 'http://covers.openlibrary.org/b/isbn/%s-L.jpg?default=false' def download_cover(self, log, result_queue, abort, - title=None, authors=None, identifiers={}, timeout=30): + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): if 'isbn' not in identifiers: return isbn = identifiers['isbn'] diff --git a/src/calibre/ebooks/metadata/sources/overdrive.py b/src/calibre/ebooks/metadata/sources/overdrive.py index 6d6ebd3990..b232c7c9a4 100755 --- a/src/calibre/ebooks/metadata/sources/overdrive.py +++ b/src/calibre/ebooks/metadata/sources/overdrive.py @@ -75,7 +75,7 @@ class OverDrive(Source): # }}} def download_cover(self, log, result_queue, abort, # {{{ - title=None, authors=None, identifiers={}, timeout=30): + title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): import mechanize cached_url = self.get_cached_cover_url(identifiers) if cached_url is None: diff --git a/src/calibre/ebooks/metadata/sources/ozon.py b/src/calibre/ebooks/metadata/sources/ozon.py index ebb104818f..0f4b0c2c53 100644 --- a/src/calibre/ebooks/metadata/sources/ozon.py +++ b/src/calibre/ebooks/metadata/sources/ozon.py @@ -55,7 +55,7 @@ class Ozon(Source): # for ozon.ru search we have to format ISBN with '-' isbn = _format_isbn(log, identifiers.get('isbn', None)) ozonid = identifiers.get('ozon', None) - + unk = unicode(_('Unknown')).upper() if (title and title != unk) or (authors and authors != [unk]) or isbn or not ozonid: qItems = set([isbn, title]) @@ -64,19 +64,19 @@ class Ozon(Source): qItems.discard(None) qItems.discard('') qItems = map(_quoteString, qItems) - + q = u' '.join(qItems).strip() log.info(u'search string: ' + q) - + if isinstance(q, unicode): q = q.encode('utf-8') if not q: return None - + search_url += quote_plus(q) else: search_url = self.ozon_url + '/webservices/OzonWebSvc.asmx/ItemDetail?ID=%s' % ozonid - + log.debug(u'search url: %r'%search_url) return search_url # }}} @@ -250,7 +250,7 @@ class Ozon(Source): return url # }}} - def download_cover(self, log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30): # {{{ + def download_cover(self, log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False): # {{{ cached_url = self.get_cached_cover_url(identifiers) if cached_url is None: log.debug('No cached cover found, running identify') diff --git a/src/calibre/ebooks/metadata/sources/worker.py b/src/calibre/ebooks/metadata/sources/worker.py index 48f0f99584..51fb883e7d 100644 --- a/src/calibre/ebooks/metadata/sources/worker.py +++ b/src/calibre/ebooks/metadata/sources/worker.py @@ -11,6 +11,7 @@ import os from threading import Event, Thread from Queue import Queue, Empty from io import BytesIO +from collections import Counter from calibre.utils.date import as_utc from calibre.ebooks.metadata.sources.identify import identify, msprefs @@ -113,13 +114,18 @@ def single_covers(title, authors, identifiers, caches, tdir): kwargs=dict(title=title, authors=authors, identifiers=identifiers)) worker.daemon = True worker.start() + c = Counter() 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) + name = plugin.name + if plugin.can_get_multiple_covers: + name += '{%d}'%c[plugin.name] + c[plugin.name] += 1 + name = '%s,,%s,,%s,,%s.cover'%(name, width, height, fmt) with open(name, 'wb') as f: f.write(data) os.mkdir(name+'.done') diff --git a/src/calibre/ebooks/oeb/display/paged.coffee b/src/calibre/ebooks/oeb/display/paged.coffee index 405b26a9f6..f97f1b3cf8 100644 --- a/src/calibre/ebooks/oeb/display/paged.coffee +++ b/src/calibre/ebooks/oeb/display/paged.coffee @@ -33,6 +33,7 @@ class PagedDisplay this.header_template = null this.header = null this.footer = null + this.hf_style = null read_document_margins: () -> # Read page margins from the document. First checks for an @page rule. @@ -184,15 +185,22 @@ class PagedDisplay # log('Time to layout:', new Date().getTime() - start_time) return sm - create_header_footer: () -> + create_header_footer: (uuid) -> if this.header_template != null this.header = document.createElement('div') this.header.setAttribute('style', "overflow:hidden; display:block; position:absolute; left:#{ this.side_margin }px; top: 0px; height: #{ this.margin_top }px; width: #{ this.col_width }px; margin: 0; padding: 0") + this.header.setAttribute('id', 'pdf_page_header_'+uuid) document.body.appendChild(this.header) if this.footer_template != null this.footer = document.createElement('div') this.footer.setAttribute('style', "overflow:hidden; display:block; position:absolute; left:#{ this.side_margin }px; top: #{ window.innerHeight - this.margin_bottom }px; height: #{ this.margin_bottom }px; width: #{ this.col_width }px; margin: 0; padding: 0") + this.footer.setAttribute('id', 'pdf_page_footer_'+uuid) document.body.appendChild(this.footer) + if this.header != null or this.footer != null + this.hf_uuid = uuid + this.hf_style = document.createElement('style') + this.hf_style.setAttribute('type', 'text/css') + document.head.appendChild(this.hf_style) this.update_header_footer(1) position_header_footer: () -> @@ -203,10 +211,16 @@ class PagedDisplay this.footer.style.setProperty('left', left+'px') update_header_footer: (pagenum) -> + if this.hf_style != null + if pagenum%2 == 1 then cls = "even_page" else cls = "odd_page" + this.hf_style.innerHTML = "#pdf_page_header_#{ this.hf_uuid } .#{ cls }, #pdf_page_footer_#{ this.hf_uuid } .#{ cls } { display: none }" + title = py_bridge.title() + author = py_bridge.author() + section = py_bridge.section() if this.header != null - this.header.innerHTML = this.header_template.replace(/_PAGENUM_/g, pagenum+"") + this.header.innerHTML = this.header_template.replace(/_PAGENUM_/g, pagenum+"").replace(/_TITLE_/g, title+"").replace(/_AUTHOR_/g, author+"").replace(/_SECTION_/g, section+"") if this.footer != null - this.footer.innerHTML = this.footer_template.replace(/_PAGENUM_/g, pagenum+"") + this.footer.innerHTML = this.footer_template.replace(/_PAGENUM_/g, pagenum+"").replace(/_TITLE_/g, title+"").replace(/_AUTHOR_/g, author+"").replace(/_SECTION_/g, section+"") fit_images: () -> # Ensure no images are wider than the available width in a column. Note diff --git a/src/calibre/ebooks/oeb/polish/main.py b/src/calibre/ebooks/oeb/polish/main.py index c04686ed6c..7ec34b5174 100644 --- a/src/calibre/ebooks/oeb/polish/main.py +++ b/src/calibre/ebooks/oeb/polish/main.py @@ -43,8 +43,8 @@ sizes, adjust margins, etc. Every action performs only the minimum set of changes needed for the desired effect.

You should use this tool as the last step in your ebook creation process.

- -

Note that polishing only works on files in the %s formats.

+{0} +

Note that polishing only works on files in the %s formats.

\ ''')%_(' or ').join('%s'%x for x in SUPPORTED), 'subset': _('''\ @@ -69,7 +69,7 @@ text might not be covered by the subset font.

'jacket': _('''\

Insert a "book jacket" page at the start of the book that contains all the book metadata such as title, tags, authors, series, comments, -etc.

'''), +etc. Any previous book jacket will be replaced.

'''), 'remove_jacket': _('''\

Remove a previous inserted book jacket page.

@@ -85,7 +85,7 @@ when single quotes at the start of contractions are involved.

def hfix(name, raw): if name == 'about': - return raw + return raw.format('') raw = raw.replace('\n\n', '__XX__') raw = raw.replace('\n', ' ') raw = raw.replace('__XX__', '\n') diff --git a/src/calibre/ebooks/oeb/polish/toc.py b/src/calibre/ebooks/oeb/polish/toc.py index 3a72b837c8..c84dd1b094 100644 --- a/src/calibre/ebooks/oeb/polish/toc.py +++ b/src/calibre/ebooks/oeb/polish/toc.py @@ -262,6 +262,35 @@ def from_links(container): toc.remove(child) return toc +def find_text(node): + LIMIT = 200 + pat = re.compile(r'\s+') + for child in node: + if isinstance(child, etree._Element): + text = xml2text(child).strip() + text = pat.sub(' ', text) + if len(text) < 1: + continue + if len(text) > LIMIT: + # Look for less text in a child of this node, recursively + ntext = find_text(child) + return ntext or (text[:LIMIT] + '...') + else: + return text + +def from_files(container): + toc = TOC() + for spinepath in container.spine_items: + name = container.abspath_to_name(spinepath) + root = container.parsed(name) + body = XPath('//h:body')(root) + if not body: + continue + text = find_text(body[0]) + if text: + toc.add(text, name) + return toc + def add_id(container, name, loc): root = container.parsed(name) body = root.xpath('//*[local-name()="body"]')[0] diff --git a/src/calibre/ebooks/oeb/reader.py b/src/calibre/ebooks/oeb/reader.py index 68db089073..d0474fa7e8 100644 --- a/src/calibre/ebooks/oeb/reader.py +++ b/src/calibre/ebooks/oeb/reader.py @@ -333,8 +333,8 @@ class OEBReader(object): guide = self.oeb.guide manifest = self.oeb.manifest for elem in xpath(opf, '/o2:package/o2:guide/o2:reference'): - href = elem.get('href') - path = urlnormalize(urldefrag(href)[0]) + ref_href = elem.get('href') + path = urlnormalize(urldefrag(ref_href)[0]) if path not in manifest.hrefs: corrected_href = None for href in manifest.hrefs: @@ -342,12 +342,12 @@ class OEBReader(object): corrected_href = href break if corrected_href is None: - self.logger.warn(u'Guide reference %r not found' % href) + self.logger.warn(u'Guide reference %r not found' % ref_href) continue - href = corrected_href + ref_href = corrected_href typ = elem.get('type') if typ not in guide: - guide.add(typ, elem.get('title'), href) + guide.add(typ, elem.get('title'), ref_href) def _find_ncx(self, opf): result = xpath(opf, '/o2:package/o2:spine/@toc') diff --git a/src/calibre/ebooks/pdf/render/engine.py b/src/calibre/ebooks/pdf/render/engine.py index 6e6347cab2..4cdebdce8c 100644 --- a/src/calibre/ebooks/pdf/render/engine.py +++ b/src/calibre/ebooks/pdf/render/engine.py @@ -7,7 +7,7 @@ __license__ = 'GPL v3' __copyright__ = '2012, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import sys, traceback +import sys, traceback, math from collections import namedtuple from functools import wraps, partial from future_builtins import map @@ -355,11 +355,11 @@ class PdfDevice(QPaintDevice): # {{{ @property def full_page_rect(self): - page_width = self.page_width * self.xdpi / 72.0 - lm = self.left_margin * self.xdpi / 72.0 - page_height = self.page_height * self.ydpi / 72.0 - tm = self.top_margin * self.ydpi / 72.0 - return (-lm, -tm, page_width, page_height) + page_width = int(math.ceil(self.page_width * self.xdpi / 72.0)) + lm = int(math.ceil(self.left_margin * self.xdpi / 72.0)) + page_height = int(math.ceil(self.page_height * self.ydpi / 72.0)) + tm = int(math.ceil(self.top_margin * self.ydpi / 72.0)) + return (-lm, -tm, page_width+1, page_height+1) @property def current_page_num(self): diff --git a/src/calibre/ebooks/pdf/render/from_html.py b/src/calibre/ebooks/pdf/render/from_html.py index 2f08e843b0..ae1083bb56 100644 --- a/src/calibre/ebooks/pdf/render/from_html.py +++ b/src/calibre/ebooks/pdf/render/from_html.py @@ -130,6 +130,18 @@ class PDFWriter(QObject): _pass_json_value = pyqtProperty(QString, fget=_pass_json_value_getter, fset=_pass_json_value_setter) + @pyqtSlot(result=unicode) + def title(self): + return self.doc_title + + @pyqtSlot(result=unicode) + def author(self): + return self.doc_author + + @pyqtSlot(result=unicode) + def section(self): + return self.current_section + def __init__(self, opts, log, cover_data=None, toc=None): from calibre.gui2 import is_ok_to_use_qt if not is_ok_to_use_qt(): @@ -154,6 +166,7 @@ class PDFWriter(QObject): self.view.page().mainFrame().setScrollBarPolicy(x, Qt.ScrollBarAlwaysOff) self.report_progress = lambda x, y: x + self.current_section = '' def dump(self, items, out_stream, pdf_metadata): opts = self.opts @@ -170,9 +183,13 @@ class PDFWriter(QObject): opts.uncompressed_pdf, mark_links=opts.pdf_mark_links) self.footer = opts.pdf_footer_template - if self.footer is None and opts.pdf_page_numbers: + if self.footer: + self.footer = self.footer.strip() + if not self.footer and opts.pdf_page_numbers: self.footer = '

_PAGENUM_

' self.header = opts.pdf_header_template + if self.header: + self.header = self.header.strip() min_margin = 36 if self.footer and opts.margin_bottom < min_margin: self.log.warn('Bottom margin is too small for footer, increasing it.') @@ -192,6 +209,8 @@ class PDFWriter(QObject): self.doc.set_metadata(title=pdf_metadata.title, author=pdf_metadata.author, tags=pdf_metadata.tags) + self.doc_title = pdf_metadata.title + self.doc_author = pdf_metadata.author self.painter.save() try: if self.cover_data is not None: @@ -273,13 +292,34 @@ class PDFWriter(QObject): self.loop.processEvents(self.loop.ExcludeUserInputEvents) evaljs('document.getElementById("MathJax_Message").style.display="none";') + def get_sections(self, anchor_map): + sections = {} + ci = os.path.abspath(os.path.normcase(self.current_item)) + if self.toc is not None: + for toc in self.toc.flat(): + path = toc.abspath or None + frag = toc.fragment or None + if path is None: + continue + path = os.path.abspath(os.path.normcase(path)) + if path == ci: + col = 0 + if frag and frag in anchor_map: + col = anchor_map[frag]['column'] + if col not in sections: + sections[col] = toc.text or _('Untitled') + + return sections + def do_paged_render(self): if self.paged_js is None: + import uuid from calibre.utils.resources import compiled_coffeescript as cc self.paged_js = cc('ebooks.oeb.display.utils') self.paged_js += cc('ebooks.oeb.display.indexing') self.paged_js += cc('ebooks.oeb.display.paged') self.paged_js += cc('ebooks.oeb.display.mathjax') + self.hf_uuid = str(uuid.uuid4()).replace('-', '') self.view.page().mainFrame().addToJavaScriptWindowObject("py_bridge", self) self.view.page().longjs_counter = 0 @@ -302,6 +342,12 @@ class PDFWriter(QObject): py_bridge.value = book_indexing.all_links_and_anchors(); '''%(self.margin_top, 0, self.margin_bottom)) + amap = self.bridge_value + if not isinstance(amap, dict): + amap = {'links':[], 'anchors':{}} # Some javascript error occurred + sections = self.get_sections(amap['anchors']) + col = 0 + if self.header: self.bridge_value = self.header evaljs('paged_display.header_template = py_bridge.value') @@ -309,15 +355,14 @@ class PDFWriter(QObject): self.bridge_value = self.footer evaljs('paged_display.footer_template = py_bridge.value') if self.header or self.footer: - evaljs('paged_display.create_header_footer();') + evaljs('paged_display.create_header_footer("%s");'%self.hf_uuid) - amap = self.bridge_value - if not isinstance(amap, dict): - amap = {'links':[], 'anchors':{}} # Some javascript error occurred start_page = self.current_page_num mf = self.view.page().mainFrame() while True: + if col in sections: + self.current_section = sections[col] self.doc.init_page() if self.header or self.footer: evaljs('paged_display.update_header_footer(%d)'%self.current_page_num) @@ -331,8 +376,10 @@ class PDFWriter(QObject): evaljs('window.scrollTo(%d, 0); paged_display.position_header_footer();'%nsl[0]) if self.doc.errors_occurred: break + col += 1 if not self.doc.errors_occurred: self.doc.add_links(self.current_item, start_page, amap['links'], amap['anchors']) + diff --git a/src/calibre/ebooks/rtf2xml/border_parse.py b/src/calibre/ebooks/rtf2xml/border_parse.py index 910d877135..f6cb2ee507 100755 --- a/src/calibre/ebooks/rtf2xml/border_parse.py +++ b/src/calibre/ebooks/rtf2xml/border_parse.py @@ -180,5 +180,6 @@ class BorderParse: elif 'single' in border_style_list: new_border_dict[att] = 'single' else: - new_border_dict[att] = border_style_list[0] + if border_style_list: + new_border_dict[att] = border_style_list[0] return new_border_dict diff --git a/src/calibre/gui2/actions/delete.py b/src/calibre/gui2/actions/delete.py index fb3efd36c0..178d94a477 100644 --- a/src/calibre/gui2/actions/delete.py +++ b/src/calibre/gui2/actions/delete.py @@ -180,6 +180,13 @@ class DeleteAction(InterfaceAction): self.gui.library_view.currentIndex()) self.gui.tags_view.recount() + def restore_format(self, book_id, original_fmt): + self.gui.current_db.restore_original_format(book_id, original_fmt) + self.gui.library_view.model().refresh_ids([book_id]) + self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(), + self.gui.library_view.currentIndex()) + self.gui.tags_view.recount() + def delete_selected_formats(self, *args): ids = self._get_selected_ids() if not ids: @@ -347,9 +354,9 @@ class DeleteAction(InterfaceAction): self.remove_matching_books_from_device() # The following will run if the selected books are not on a connected device. # The user has selected to delete from the library or the device and library. - if not confirm('

'+_('The selected books will be ' + if not confirm('

'+_('The %d selected book(s) will be ' 'permanently deleted and the files ' - 'removed from your calibre library. Are you sure?') + 'removed from your calibre library. Are you sure?')%len(to_delete_ids) +'

', 'library_delete_books', self.gui): return next_id = view.next_id @@ -382,9 +389,9 @@ class DeleteAction(InterfaceAction): view = self.gui.card_b_view paths = view.model().paths(rows) ids = view.model().indices(rows) - if not confirm('

'+_('The selected books will be ' + if not confirm('

'+_('The %d selected book(s) will be ' 'permanently deleted ' - 'from your device. Are you sure?') + 'from your device. Are you sure?')%len(paths) +'

', 'device_delete_books', self.gui): return job = self.gui.remove_paths(paths) diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 4a78c6663a..485bc5bf90 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -279,7 +279,7 @@ class EditMetadataAction(InterfaceAction): ''' Edit metadata of selected books in library in bulk. ''' - rows = [r.row() for r in \ + rows = [r.row() for r in self.gui.library_view.selectionModel().selectedRows()] m = self.gui.library_view.model() ids = [m.id(r) for r in rows] @@ -469,45 +469,39 @@ class EditMetadataAction(InterfaceAction): if not had_orig_cover and dest_cover: db.set_cover(dest_id, dest_cover) - for key in db.field_metadata: #loop thru all defined fields - if db.field_metadata[key]['is_custom']: - colnum = db.field_metadata[key]['colnum'] + for key in db.field_metadata: # loop thru all defined fields + fm = db.field_metadata[key] + if not fm['is_custom']: + continue + dt = fm['datatype'] + colnum = fm['colnum'] # Get orig_dest_comments before it gets changed - if db.field_metadata[key]['datatype'] == 'comments': - orig_dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True) + if dt == 'comments': + orig_dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True) + for src_id in src_ids: - dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True) - src_value = db.get_custom(src_id, num=colnum, index_is_id=True) - if db.field_metadata[key]['datatype'] == 'comments': - if src_value and src_value != orig_dest_value: - if not dest_value: + dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True) + src_value = db.get_custom(src_id, num=colnum, index_is_id=True) + if (dt == 'comments' and src_value and src_value != orig_dest_value): + if not dest_value: + db.set_custom(dest_id, src_value, num=colnum) + else: + dest_value = unicode(dest_value) + u'\n\n' + unicode(src_value) + db.set_custom(dest_id, dest_value, num=colnum) + if (dt in {'bool', 'int', 'float', 'rating', 'datetime'} and dest_value is None): db.set_custom(dest_id, src_value, num=colnum) - else: - dest_value = unicode(dest_value) + u'\n\n' + unicode(src_value) + if (dt == 'series' and not dest_value and src_value): + src_index = db.get_custom_extra(src_id, num=colnum, index_is_id=True) + db.set_custom(dest_id, src_value, num=colnum, extra=src_index) + if (dt == 'enumeration' or (dt == 'text' and not fm['is_multiple']) and not dest_value): + db.set_custom(dest_id, src_value, num=colnum) + if (dt == 'text' and fm['is_multiple'] and src_value): + if not dest_value: + dest_value = src_value + else: + dest_value.extend(src_value) db.set_custom(dest_id, dest_value, num=colnum) - if db.field_metadata[key]['datatype'] in \ - ('bool', 'int', 'float', 'rating', 'datetime') \ - and dest_value is None: - db.set_custom(dest_id, src_value, num=colnum) - if db.field_metadata[key]['datatype'] == 'series' \ - and not dest_value: - if src_value: - src_index = db.get_custom_extra(src_id, num=colnum, index_is_id=True) - db.set_custom(dest_id, src_value, num=colnum, extra=src_index) - if (db.field_metadata[key]['datatype'] == 'enumeration' or - (db.field_metadata[key]['datatype'] == 'text' and - not db.field_metadata[key]['is_multiple']) - and not dest_value): - db.set_custom(dest_id, src_value, num=colnum) - if db.field_metadata[key]['datatype'] == 'text' \ - and db.field_metadata[key]['is_multiple']: - if src_value: - if not dest_value: - dest_value = src_value - else: - dest_value.extend(src_value) - db.set_custom(dest_id, dest_value, num=colnum) - # }}} + # }}} def edit_device_collections(self, view, oncard=None): model = view.model() @@ -515,8 +509,8 @@ class EditMetadataAction(InterfaceAction): d = DeviceCategoryEditor(self.gui, tag_to_match=None, data=result, key=sort_key) d.exec_() if d.result() == d.Accepted: - to_rename = d.to_rename # dict of new text to old ids - to_delete = d.to_delete # list of ids + to_rename = d.to_rename # dict of new text to old ids + to_delete = d.to_delete # list of ids for old_id, new_name in to_rename.iteritems(): model.rename_collection(old_id, new_name=unicode(new_name)) for item in to_delete: @@ -585,7 +579,6 @@ class EditMetadataAction(InterfaceAction): self.apply_pd.value += 1 QTimer.singleShot(50, self.do_one_apply) - def apply_mi(self, book_id, mi): db = self.gui.current_db diff --git a/src/calibre/gui2/actions/polish.py b/src/calibre/gui2/actions/polish.py index 127749cc51..5aecbd2d87 100644 --- a/src/calibre/gui2/actions/polish.py +++ b/src/calibre/gui2/actions/polish.py @@ -37,7 +37,13 @@ class Polish(QDialog): # {{{ self.setWindowTitle(title) self.help_text = { - 'polish': _('

About Polishing books

%s')%HELP['about'], + 'polish': _('

About Polishing books

%s')%HELP['about'].format( + _('''

If you have both EPUB and ORIGINAL_EPUB in your book, + then polishing will run on ORIGINAL_EPUB (the same for other + ORIGINAL_* formats). So if you + want Polishing to not run on the ORIGINAL_* format, delete the + ORIGINAL_* format before running it.

''') + ), 'subset':_('

Subsetting fonts

%s')%HELP['subset'], diff --git a/src/calibre/gui2/actions/store.py b/src/calibre/gui2/actions/store.py index 896516c665..cbe44e8f82 100644 --- a/src/calibre/gui2/actions/store.py +++ b/src/calibre/gui2/actions/store.py @@ -88,9 +88,7 @@ class StoreAction(InterfaceAction): if row == None: error_dialog(self.gui, _('Cannot search'), _('No book selected'), show=True) return - - query = 'author:"%s"' % self._get_author(row) - self.search(query) + self.search({ 'author': self._get_author(row) }) def _get_title(self, row): title = '' @@ -107,18 +105,14 @@ class StoreAction(InterfaceAction): if row == None: error_dialog(self.gui, _('Cannot search'), _('No book selected'), show=True) return - - query = 'title:"%s"' % self._get_title(row) - self.search(query) + self.search({ 'title': self._get_title(row) }) def search_author_title(self): row = self._get_selected_row() if row == None: error_dialog(self.gui, _('Cannot search'), _('No book selected'), show=True) return - - query = 'author:"%s" title:"%s"' % (self._get_author(row), self._get_title(row)) - self.search(query) + self.search({ 'author': self._get_author(row), 'title': self._get_title(row) }) def choose(self): from calibre.gui2.store.config.chooser.chooser_dialog import StoreChooserDialog diff --git a/src/calibre/gui2/auto_add.py b/src/calibre/gui2/auto_add.py index 033d7124d5..bb4b652526 100644 --- a/src/calibre/gui2/auto_add.py +++ b/src/calibre/gui2/auto_add.py @@ -15,7 +15,8 @@ from PyQt4.Qt import (QFileSystemWatcher, QObject, Qt, pyqtSignal, QTimer) from calibre import prints from calibre.ptempfile import PersistentTemporaryDirectory from calibre.ebooks import BOOK_EXTENSIONS -from calibre.gui2 import question_dialog, gprefs +from calibre.gui2 import gprefs +from calibre.gui2.dialogs.duplicates import DuplicatesQuestion AUTO_ADDED = frozenset(BOOK_EXTENSIONS) - {'pdr', 'mbp', 'tan'} @@ -218,17 +219,20 @@ class AutoAdder(QObject): paths.extend(p) formats.extend(f) metadata.extend(mis) - files = [_('%(title)s by %(author)s')%dict(title=mi.title, - author=mi.format_field('authors')[1]) for mi in metadata] - if question_dialog(self.parent(), _('Duplicates found!'), - _('Books with the same title as the following already ' - 'exist in the database. Add them anyway?'), - '\n'.join(files)): - dups, ids = m.add_books(paths, formats, metadata, - add_duplicates=True, return_ids=True) - added_ids |= set(ids) - num = len(ids) - count += num + dups = [(mi, mi.cover, [p]) for mi, p in zip(metadata, paths)] + d = DuplicatesQuestion(m.db, dups, parent=gui) + dups = tuple(d.duplicates) + if dups: + paths, formats, metadata = [], [], [] + for mi, cover, book_paths in dups: + paths.extend(book_paths) + formats.extend([p.rpartition('.')[-1] for p in book_paths]) + metadata.extend([mi for i in book_paths]) + ids = m.add_books(paths, formats, metadata, + add_duplicates=True, return_ids=True)[1] + added_ids |= set(ids) + num = len(ids) + count += num for tdir in data.itervalues(): try: diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index 4d00d282d5..45430da6f4 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -405,6 +405,7 @@ class BookInfo(QWebView): link_clicked = pyqtSignal(object) remove_format = pyqtSignal(int, object) save_format = pyqtSignal(int, object) + restore_format = pyqtSignal(int, object) def __init__(self, vertical, parent=None): QWebView.__init__(self, parent) @@ -418,7 +419,7 @@ class BookInfo(QWebView): palette.setBrush(QPalette.Base, Qt.transparent) self.page().setPalette(palette) self.css = P('templates/book_details.css', data=True).decode('utf-8') - for x, icon in [('remove', 'trash.png'), ('save', 'save.png')]: + for x, icon in [('remove', 'trash.png'), ('save', 'save.png'), ('restore', 'edit-undo.png')]: ac = QAction(QIcon(I(icon)), '', self) ac.current_fmt = None ac.triggered.connect(getattr(self, '%s_format_triggerred'%x)) @@ -436,6 +437,9 @@ class BookInfo(QWebView): def save_format_triggerred(self): self.context_action_triggered('save') + def restore_format_triggerred(self): + self.context_action_triggered('restore') + def link_activated(self, link): self._link_clicked = True if unicode(link.scheme()) in ('http', 'https'): @@ -479,7 +483,11 @@ class BookInfo(QWebView): traceback.print_exc() else: for a, t in [('remove', _('Delete the %s format')), - ('save', _('Save the %s format to disk'))]: + ('save', _('Save the %s format to disk')), + ('restore', _('Restore the %s format')), + ]: + if a == 'restore' and not fmt.upper().startswith('ORIGINAL_'): + continue ac = getattr(self, '%s_format_action'%a) ac.current_fmt = (book_id, fmt) ac.setText(t%parts[2]) @@ -585,6 +593,7 @@ class BookDetails(QWidget): # {{{ view_specific_format = pyqtSignal(int, object) remove_specific_format = pyqtSignal(int, object) save_specific_format = pyqtSignal(int, object) + restore_specific_format = pyqtSignal(int, object) remote_file_dropped = pyqtSignal(object, object) files_dropped = pyqtSignal(object, object) cover_changed = pyqtSignal(object, object) @@ -654,6 +663,7 @@ class BookDetails(QWidget): # {{{ self.book_info.link_clicked.connect(self.handle_click) self.book_info.remove_format.connect(self.remove_specific_format) self.book_info.save_format.connect(self.save_specific_format) + self.book_info.restore_format.connect(self.restore_specific_format) self.setCursor(Qt.PointingHandCursor) def handle_click(self, link): diff --git a/src/calibre/gui2/convert/pdf_output.py b/src/calibre/gui2/convert/pdf_output.py index 98334d1709..889a99a66a 100644 --- a/src/calibre/gui2/convert/pdf_output.py +++ b/src/calibre/gui2/convert/pdf_output.py @@ -22,7 +22,9 @@ class PluginWidget(Widget, Ui_Form): 'override_profile_size', 'paper_size', 'custom_size', 'preserve_cover_aspect_ratio', 'pdf_serif_family', 'unit', 'pdf_sans_family', 'pdf_mono_family', 'pdf_standard_font', - 'pdf_default_font_size', 'pdf_mono_font_size', 'pdf_page_numbers']) + 'pdf_default_font_size', 'pdf_mono_font_size', 'pdf_page_numbers', + 'pdf_footer_template', 'pdf_header_template', + ]) self.db, self.book_id = db, book_id for x in get_option('paper_size').option.choices: diff --git a/src/calibre/gui2/convert/pdf_output.ui b/src/calibre/gui2/convert/pdf_output.ui index a4d184d6bc..a3cd131ba3 100644 --- a/src/calibre/gui2/convert/pdf_output.ui +++ b/src/calibre/gui2/convert/pdf_output.ui @@ -6,8 +6,8 @@ 0 0 - 590 - 395 + 638 + 498 @@ -84,6 +84,13 @@ + + + + Add page &numbers to the bottom of every page + + + @@ -170,24 +177,52 @@ - - - - Qt::Vertical - - - - 20 - 213 - - - - - - - - Add page &numbers to the bottom of every page + + + + Page headers and footers + + + + + You can insert headers and footers into every page of the produced PDF file by using header and footer templates. For examples, see the <a href="http://manual.calibre-ebook.com/conversion.html#converting-to-pdf">documentation</a>. + + + true + + + true + + + + + + + &Header template: + + + opt_pdf_header_template + + + + + + + + + + &Footer template: + + + opt_pdf_footer_template + + + + + + + diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index eff36e865b..2a5b061819 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -272,6 +272,8 @@ class LayoutMixin(object): # {{{ self.iactions['Remove Books'].remove_format_by_id) self.book_details.save_specific_format.connect( self.iactions['Save To Disk'].save_library_format_by_ids) + self.book_details.restore_specific_format.connect( + self.iactions['Remove Books'].restore_format) self.book_details.view_device_book.connect( self.iactions['View'].view_device_book) diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 3fed536603..a08c13c79b 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -9,7 +9,7 @@ import functools, re, os, traceback, errno, time from collections import defaultdict from PyQt4.Qt import (QAbstractTableModel, Qt, pyqtSignal, QIcon, QImage, - QModelIndex, QVariant, QDateTime, QColor) + QModelIndex, QVariant, QDateTime, QColor, QPixmap) from calibre.gui2 import NONE, UNDEFINED_QDATETIME, error_dialog from calibre.utils.pyparsing import ParseException @@ -94,7 +94,14 @@ class ColumnIcon(object): return icon_bitmap d = os.path.join(config_dir, 'cc_icons', icon) if (os.path.exists(d)): - icon_bitmap = QIcon(d) + icon_bitmap = QPixmap(d) + h = icon_bitmap.height() + w = icon_bitmap.width() + # If the image is landscape and width is more than 50% + # large than height, use the pixmap. This tells Qt to display + # the image full width. It might be clipped to row height. + if w < (3 * h)/2: + icon_bitmap = QIcon(icon_bitmap) icon_cache[id_][dex] = icon_bitmap icon_bitmap_cache[icon] = icon_bitmap self.mi = None diff --git a/src/calibre/gui2/metadata/single_download.py b/src/calibre/gui2/metadata/single_download.py index e4a78b674a..ffa83b6ea8 100644 --- a/src/calibre/gui2/metadata/single_download.py +++ b/src/calibre/gui2/metadata/single_download.py @@ -16,13 +16,12 @@ 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, QStyle, QStackedWidget, QWidget, - QTableView, QGridLayout, QFontInfo, QPalette, QTimer, - pyqtSignal, QAbstractTableModel, QVariant, QSize, - QListView, QPixmap, QAbstractListModel, QColor, QRect, - QTextBrowser, QStringListModel) +from PyQt4.Qt import ( + QStyledItemDelegate, QTextDocument, QRectF, QIcon, Qt, QApplication, + QDialog, QVBoxLayout, QLabel, QDialogButtonBox, QStyle, QStackedWidget, + QWidget, QTableView, QGridLayout, QFontInfo, QPalette, QTimer, pyqtSignal, + QAbstractTableModel, QVariant, QSize, QListView, QPixmap, QModelIndex, + QAbstractListModel, QColor, QRect, QTextBrowser, QStringListModel) from PyQt4.QtWebKit import QWebView from calibre.customize.ui import metadata_plugins @@ -654,7 +653,7 @@ class CoversModel(QAbstractListModel): # {{{ for i, plugin in enumerate(metadata_plugins(['cover'])): self.covers.append((plugin.name+'\n'+_('Searching...'), QVariant(self.blank), None, True)) - self.plugin_map[plugin] = i+1 + self.plugin_map[plugin] = [i+1] if do_reset: self.reset() @@ -685,48 +684,82 @@ class CoversModel(QAbstractListModel): # {{{ def plugin_for_index(self, index): row = index.row() if hasattr(index, 'row') else index for k, v in self.plugin_map.iteritems(): - if v == row: + if row in v: return k - def cover_keygen(self, x): - pmap = x[2] - if pmap is None: - return 1 - return pmap.width()*pmap.height() - def clear_failed(self): + # Remove entries that are still waiting good = [] pmap = {} - dcovers = sorted(self.covers[1:], key=self.cover_keygen, reverse=True) - cmap = {x:self.covers.index(x) for x in self.covers} + def keygen(x): + pmap = x[2] + if pmap is None: + return 1 + return pmap.width()*pmap.height() + dcovers = sorted(self.covers[1:], key=keygen, reverse=True) + cmap = {i:self.plugin_for_index(i) for i in xrange(len(self.covers))} for i, x in enumerate(self.covers[0:1] + dcovers): if not x[-1]: good.append(x) - if i > 0: - plugin = self.plugin_for_index(cmap[x]) - pmap[plugin] = len(good) - 1 + plugin = cmap[i] + if plugin is not None: + try: + pmap[plugin].append(len(good) - 1) + except KeyError: + pmap[plugin] = [len(good)-1] self.covers = good self.plugin_map = pmap self.reset() - def index_for_plugin(self, plugin): - idx = self.plugin_map.get(plugin, 0) - return self.index(idx) + def pointer_from_index(self, index): + row = index.row() if hasattr(index, 'row') else index + try: + return self.covers[row][2] + except IndexError: + pass + + def index_from_pointer(self, pointer): + for r, (text, scaled, pmap, waiting) in enumerate(self.covers): + if pointer == pmap: + return self.index(r) + return self.index(0) def update_result(self, plugin_name, width, height, data): - idx = None - for plugin, i in self.plugin_map.iteritems(): - if plugin.name == plugin_name: - idx = i - break - if idx is None: - return - pmap = QPixmap() - pmap.loadFromData(data) - if pmap.isNull(): - return - self.covers[idx] = self.get_item(plugin_name, pmap, waiting=False) - self.dataChanged.emit(self.index(idx), self.index(idx)) + if plugin_name.endswith('}'): + # multi cover plugin + plugin_name = plugin_name.partition('{')[0] + plugin = [plugin for plugin in self.plugin_map if plugin.name == plugin_name] + if not plugin: + return + plugin = plugin[0] + last_row = max(self.plugin_map[plugin]) + pmap = QPixmap() + pmap.loadFromData(data) + if pmap.isNull(): + return + self.beginInsertRows(QModelIndex(), last_row, last_row) + for rows in self.plugin_map.itervalues(): + for i in xrange(len(rows)): + if rows[i] >= last_row: + rows[i] += 1 + self.plugin_map[plugin].insert(-1, last_row) + self.covers.insert(last_row, self.get_item(plugin_name, pmap, waiting=False)) + self.endInsertRows() + else: + # single cover plugin + idx = None + for plugin, rows in self.plugin_map.iteritems(): + if plugin.name == plugin_name: + idx = rows[0] + break + if idx is None: + return + pmap = QPixmap() + pmap.loadFromData(data) + if pmap.isNull(): + return + self.covers[idx] = self.get_item(plugin_name, pmap, waiting=False) + self.dataChanged.emit(self.index(idx), self.index(idx)) def cover_pixmap(self, index): row = index.row() @@ -774,9 +807,12 @@ class CoversView(QListView): # {{{ self.m.reset_covers() def clear_failed(self): - plugin = self.m.plugin_for_index(self.currentIndex()) + pointer = self.m.pointer_from_index(self.currentIndex()) self.m.clear_failed() - self.select(self.m.index_for_plugin(plugin).row()) + if pointer is None: + self.select(0) + else: + self.select(self.m.index_from_pointer(pointer).row()) # }}} @@ -852,10 +888,11 @@ class CoversWidget(QWidget): # {{{ if num < 2: txt = _('Could not find any covers for %s')%self.book.title else: - txt = _('Found %(num)d covers of %(title)s. ' - 'Pick the one you like best.')%dict(num=num-1, + txt = _('Found %(num)d possible covers for %(title)s. ' + 'When the download completes, the covers will be sorted by size.')%dict(num=num-1, title=self.title) self.msg.setText(txt) + self.msg.setWordWrap(True) self.finished.emit() diff --git a/src/calibre/gui2/proceed.py b/src/calibre/gui2/proceed.py index 9bdf48e086..67efe48b53 100644 --- a/src/calibre/gui2/proceed.py +++ b/src/calibre/gui2/proceed.py @@ -18,7 +18,8 @@ from calibre.gui2.dialogs.message_box import ViewLog Question = namedtuple('Question', 'payload callback cancel_callback ' 'title msg html_log log_viewer_title log_is_file det_msg ' - 'show_copy_button checkbox_msg checkbox_checked') + 'show_copy_button checkbox_msg checkbox_checked action_callback ' + 'action_label action_icon') class ProceedQuestion(QDialog): @@ -51,6 +52,8 @@ class ProceedQuestion(QDialog): self.copy_button = self.bb.addButton(_('&Copy to clipboard'), self.bb.ActionRole) self.copy_button.clicked.connect(self.copy_to_clipboard) + self.action_button = self.bb.addButton('', self.bb.ActionRole) + self.action_button.clicked.connect(self.action_clicked) self.show_det_msg = _('Show &details') self.hide_det_msg = _('Hide &details') self.det_msg_toggle = self.bb.addButton(self.show_det_msg, self.bb.ActionRole) @@ -81,6 +84,12 @@ class ProceedQuestion(QDialog): unicode(self.det_msg.toPlainText()))) self.copy_button.setText(_('Copied')) + def action_clicked(self): + if self.questions: + q = self.questions[0] + self.questions[0] = q._replace(callback=q.action_callback) + self.accept() + def accept(self): if self.questions: payload, callback, cancel_callback = self.questions[0][:3] @@ -123,13 +132,19 @@ class ProceedQuestion(QDialog): self.resize(sz) def show_question(self): - if self.isVisible(): return + if self.isVisible(): + return if self.questions: question = self.questions[0] self.msg_label.setText(question.msg) self.setWindowTitle(question.title) self.log_button.setVisible(bool(question.html_log)) self.copy_button.setVisible(bool(question.show_copy_button)) + self.action_button.setVisible(question.action_callback is not None) + if question.action_callback is not None: + self.action_button.setText(question.action_label or '') + self.action_button.setIcon( + QIcon() if question.action_icon is None else question.action_icon) self.det_msg.setPlainText(question.det_msg or '') self.det_msg.setVisible(False) self.det_msg_toggle.setVisible(bool(question.det_msg)) @@ -145,7 +160,8 @@ class ProceedQuestion(QDialog): def __call__(self, callback, payload, html_log, log_viewer_title, title, msg, det_msg='', show_copy_button=False, cancel_callback=None, - log_is_file=False, checkbox_msg=None, checkbox_checked=False): + log_is_file=False, checkbox_msg=None, checkbox_checked=False, + action_callback=None, action_label=None, action_icon=None): ''' A non modal popup that notifies the user that a background task has been completed. This class guarantees that only a single popup is @@ -170,11 +186,19 @@ class ProceedQuestion(QDialog): called with both the payload and the state of the checkbox as arguments. :param checkbox_checked: If True the checkbox is checked by default. + :param action_callback: If not None, an extra button is added, which + when clicked will cause action_callback to be called + instead of callback. action_callback is called in + exactly the same way as callback. + :param action_label: The text on the action button + :param action_icon: The icon for the action button, must be a QIcon object or None ''' - question = Question(payload, callback, cancel_callback, title, msg, - html_log, log_viewer_title, log_is_file, det_msg, - show_copy_button, checkbox_msg, checkbox_checked) + question = Question( + payload, callback, cancel_callback, title, msg, html_log, + log_viewer_title, log_is_file, det_msg, show_copy_button, + checkbox_msg, checkbox_checked, action_callback, action_label, + action_icon) self.questions.append(question) self.show_question() diff --git a/src/calibre/gui2/store/search/search.py b/src/calibre/gui2/store/search/search.py index 20c6c09a03..c001bfbe5c 100644 --- a/src/calibre/gui2/store/search/search.py +++ b/src/calibre/gui2/store/search/search.py @@ -62,16 +62,20 @@ class SearchDialog(QDialog, Ui_Dialog): self.setup_store_checks() # Set the search query + if isinstance(query, (str, unicode)): + self.search_edit.setText(query) + elif isinstance(query, dict): + if 'author' in query: + self.search_author.setText(query['author']) + if 'title' in query: + self.search_title.setText(query['title']) # Title - self.search_title.setText(query) self.search_title.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLengthWithIcon) self.search_title.setMinimumContentsLength(25) # Author - self.search_author.setText(query) self.search_author.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLengthWithIcon) self.search_author.setMinimumContentsLength(25) # Keyword - self.search_edit.setText(query) self.search_edit.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLengthWithIcon) self.search_edit.setMinimumContentsLength(25) @@ -408,7 +412,7 @@ class SearchDialog(QDialog, Ui_Dialog): self.save_state() def exec_(self): - if unicode(self.search_edit.text()).strip(): + if unicode(self.search_edit.text()).strip() or unicode(self.search_title.text()).strip() or unicode(self.search_author.text()).strip(): self.do_search() return QDialog.exec_(self) diff --git a/src/calibre/gui2/store/stores/amazon_de_plugin.py b/src/calibre/gui2/store/stores/amazon_de_plugin.py index 06bc571494..6833bd3710 100644 --- a/src/calibre/gui2/store/stores/amazon_de_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_de_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 3 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -18,13 +18,26 @@ from calibre import browser from calibre.gui2 import open_url from calibre.gui2.store.search_result import SearchResult +class AmazonDEKindleStore(StorePlugin): + ''' + For comments on the implementation, please see amazon_plugin.py + ''' + aff_id = {'tag': 'charhale0a-21'} + store_link = ('http://www.amazon.de/gp/redirect.html?ie=UTF8&site-redirect=de' + '&tag=%(tag)s&linkCode=ur2&camp=1638&creative=19454' + '&location=http://www.amazon.de/ebooks-kindle/b?node=530886031') + store_link_details = ('http://www.amazon.de/gp/redirect.html?ie=UTF8' + '&location=http://www.amazon.de/dp/%(asin)s&site-redirect=de' + '&tag=%(tag)s&linkCode=ur2&camp=1638&creative=6742') + search_url = 'http://www.amazon.de/s/?url=search-alias%3Ddigital-text&field-keywords=' -# This class is copy/pasted from amason_uk_plugin. Do not modify it in any -# other amazon EU plugin. Be sure to paste it into all other amazon EU plugins -# when modified. + author_article = 'von ' + + and_word = ' und ' + + # ---- Copy from here to end -class AmazonEUBase(StorePlugin): ''' For comments on the implementation, please see amazon_plugin.py ''' @@ -46,12 +59,18 @@ class AmazonEUBase(StorePlugin): doc = html.fromstring(f.read())#.decode('latin-1', 'replace')) data_xpath = '//div[contains(@class, "prod")]' - format_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()' + # Results can be in a grid (table) or a column + format_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()') asin_xpath = '@name' cover_xpath = './/img[@class="productImage"]/@src' title_xpath = './/h3[@class="newaps"]/a//text()' author_xpath = './/h3[@class="newaps"]//span[contains(@class, "reg")]//text()' - price_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and contains(@class, "bld")]/text()' + # Results can be in a grid (table) or a column + price_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') for data in doc.xpath(data_xpath): if counter <= 0: @@ -102,20 +121,3 @@ class AmazonEUBase(StorePlugin): def get_details(self, search_result, timeout): pass -class AmazonDEKindleStore(AmazonEUBase): - ''' - For comments on the implementation, please see amazon_plugin.py - ''' - - aff_id = {'tag': 'charhale0a-21'} - store_link = ('http://www.amazon.de/gp/redirect.html?ie=UTF8&site-redirect=de' - '&tag=%(tag)s&linkCode=ur2&camp=1638&creative=19454' - '&location=http://www.amazon.de/ebooks-kindle/b?node=530886031') - store_link_details = ('http://www.amazon.de/gp/redirect.html?ie=UTF8' - '&location=http://www.amazon.de/dp/%(asin)s&site-redirect=de' - '&tag=%(tag)s&linkCode=ur2&camp=1638&creative=6742') - search_url = 'http://www.amazon.de/s/?url=search-alias%3Ddigital-text&field-keywords=' - - author_article = 'von ' - - and_word = ' und ' \ No newline at end of file diff --git a/src/calibre/gui2/store/stores/amazon_es_plugin.py b/src/calibre/gui2/store/stores/amazon_es_plugin.py index 0254b953c4..0b71ae657b 100644 --- a/src/calibre/gui2/store/stores/amazon_es_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_es_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 3 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -18,12 +18,25 @@ from calibre import browser from calibre.gui2 import open_url from calibre.gui2.store.search_result import SearchResult +class AmazonESKindleStore(StorePlugin): + ''' + For comments on the implementation, please see amazon_plugin.py + ''' -# This class is copy/pasted from amason_uk_plugin. Do not modify it in any -# other amazon EU plugin. Be sure to paste it into all other amazon EU plugins -# when modified. + aff_id = {'tag': 'charhale09-21'} + store_link = ('http://www.amazon.es/ebooks-kindle/b?_encoding=UTF8&' + 'node=827231031&tag=%(tag)s&ie=UTF8&linkCode=ur2&camp=3626&creative=24790') + store_link_details = ('http://www.amazon.es/gp/redirect.html?ie=UTF8&' + 'location=http://www.amazon.es/dp/%(asin)s&tag=%(tag)s' + '&linkCode=ur2&camp=3626&creative=24790') + search_url = 'http://www.amazon.es/s/?url=search-alias%3Ddigital-text&field-keywords=' + + author_article = 'de ' + + and_word = ' y ' + + # ---- Copy from here to end -class AmazonEUBase(StorePlugin): ''' For comments on the implementation, please see amazon_plugin.py ''' @@ -45,12 +58,18 @@ class AmazonEUBase(StorePlugin): doc = html.fromstring(f.read())#.decode('latin-1', 'replace')) data_xpath = '//div[contains(@class, "prod")]' - format_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()' + # Results can be in a grid (table) or a column + format_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()') asin_xpath = '@name' cover_xpath = './/img[@class="productImage"]/@src' title_xpath = './/h3[@class="newaps"]/a//text()' author_xpath = './/h3[@class="newaps"]//span[contains(@class, "reg")]//text()' - price_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and contains(@class, "bld")]/text()' + # Results can be in a grid (table) or a column + price_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') for data in doc.xpath(data_xpath): if counter <= 0: @@ -101,19 +120,3 @@ class AmazonEUBase(StorePlugin): def get_details(self, search_result, timeout): pass -class AmazonESKindleStore(AmazonEUBase): - ''' - For comments on the implementation, please see amazon_plugin.py - ''' - - aff_id = {'tag': 'charhale09-21'} - store_link = ('http://www.amazon.es/ebooks-kindle/b?_encoding=UTF8&' - 'node=827231031&tag=%(tag)s&ie=UTF8&linkCode=ur2&camp=3626&creative=24790') - store_link_details = ('http://www.amazon.es/gp/redirect.html?ie=UTF8&' - 'location=http://www.amazon.es/dp/%(asin)s&tag=%(tag)s' - '&linkCode=ur2&camp=3626&creative=24790') - search_url = 'http://www.amazon.es/s/?url=search-alias%3Ddigital-text&field-keywords=' - - author_article = 'de ' - - and_word = ' y ' \ No newline at end of file diff --git a/src/calibre/gui2/store/stores/amazon_fr_plugin.py b/src/calibre/gui2/store/stores/amazon_fr_plugin.py index 30f6b6f51e..4520a3a104 100644 --- a/src/calibre/gui2/store/stores/amazon_fr_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_fr_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 3 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -18,13 +18,22 @@ from calibre import browser from calibre.gui2 import open_url from calibre.gui2.store.search_result import SearchResult +class AmazonFRKindleStore(StorePlugin): + ''' + For comments on the implementation, please see amazon_plugin.py + ''' + aff_id = {'tag': 'charhale-21'} + store_link = 'http://www.amazon.fr/livres-kindle/b?ie=UTF8&node=695398031&ref_=sa_menu_kbo1&_encoding=UTF8&tag=%(tag)s&linkCode=ur2&camp=1642&creative=19458' % aff_id + store_link_details = 'http://www.amazon.fr/gp/redirect.html?ie=UTF8&location=http://www.amazon.fr/dp/%(asin)s&tag=%(tag)s&linkCode=ur2&camp=1634&creative=6738' + search_url = 'http://www.amazon.fr/s/?url=search-alias%3Ddigital-text&field-keywords=' -# This class is copy/pasted from amason_uk_plugin. Do not modify it in any -# other amazon EU plugin. Be sure to paste it into all other amazon EU plugins -# when modified. + author_article = 'de ' + + and_word = ' et ' + + # ---- Copy from here to end -class AmazonEUBase(StorePlugin): ''' For comments on the implementation, please see amazon_plugin.py ''' @@ -46,12 +55,18 @@ class AmazonEUBase(StorePlugin): doc = html.fromstring(f.read())#.decode('latin-1', 'replace')) data_xpath = '//div[contains(@class, "prod")]' - format_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()' + # Results can be in a grid (table) or a column + format_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()') asin_xpath = '@name' cover_xpath = './/img[@class="productImage"]/@src' title_xpath = './/h3[@class="newaps"]/a//text()' author_xpath = './/h3[@class="newaps"]//span[contains(@class, "reg")]//text()' - price_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and contains(@class, "bld")]/text()' + # Results can be in a grid (table) or a column + price_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') for data in doc.xpath(data_xpath): if counter <= 0: @@ -102,16 +117,3 @@ class AmazonEUBase(StorePlugin): def get_details(self, search_result, timeout): pass -class AmazonFRKindleStore(AmazonEUBase): - ''' - For comments on the implementation, please see amazon_plugin.py - ''' - - aff_id = {'tag': 'charhale-21'} - store_link = 'http://www.amazon.fr/livres-kindle/b?ie=UTF8&node=695398031&ref_=sa_menu_kbo1&_encoding=UTF8&tag=%(tag)s&linkCode=ur2&camp=1642&creative=19458' % aff_id - store_link_details = 'http://www.amazon.fr/gp/redirect.html?ie=UTF8&location=http://www.amazon.fr/dp/%(asin)s&tag=%(tag)s&linkCode=ur2&camp=1634&creative=6738' - search_url = 'http://www.amazon.fr/s/?url=search-alias%3Ddigital-text&field-keywords=' - - author_article = 'de ' - - and_word = ' et ' diff --git a/src/calibre/gui2/store/stores/amazon_it_plugin.py b/src/calibre/gui2/store/stores/amazon_it_plugin.py index 53028cf192..f8a756d1d5 100644 --- a/src/calibre/gui2/store/stores/amazon_it_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_it_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 3 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -18,12 +18,25 @@ from calibre import browser from calibre.gui2 import open_url from calibre.gui2.store.search_result import SearchResult +class AmazonITKindleStore(StorePlugin): + ''' + For comments on the implementation, please see amazon_plugin.py + ''' -# This class is copy/pasted from amason_uk_plugin. Do not modify it in any -# other amazon EU plugin. Be sure to paste it into all other amazon EU plugins -# when modified. + aff_id = {'tag': 'httpcharles07-21'} + store_link = ('http://www.amazon.it/ebooks-kindle/b?_encoding=UTF8&' + 'node=827182031&tag=%(tag)s&ie=UTF8&linkCode=ur2&camp=3370&creative=23322') + store_link_details = ('http://www.amazon.it/gp/redirect.html?ie=UTF8&' + 'location=http://www.amazon.it/dp/%(asin)s&tag=%(tag)s&' + 'linkCode=ur2&camp=3370&creative=23322') + search_url = 'http://www.amazon.it/s/?url=search-alias%3Ddigital-text&field-keywords=' + + author_article = 'di ' + + and_word = ' e ' + + # ---- Copy from here to end -class AmazonEUBase(StorePlugin): ''' For comments on the implementation, please see amazon_plugin.py ''' @@ -45,12 +58,18 @@ class AmazonEUBase(StorePlugin): doc = html.fromstring(f.read())#.decode('latin-1', 'replace')) data_xpath = '//div[contains(@class, "prod")]' - format_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()' + # Results can be in a grid (table) or a column + format_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()') asin_xpath = '@name' cover_xpath = './/img[@class="productImage"]/@src' title_xpath = './/h3[@class="newaps"]/a//text()' author_xpath = './/h3[@class="newaps"]//span[contains(@class, "reg")]//text()' - price_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and contains(@class, "bld")]/text()' + # Results can be in a grid (table) or a column + price_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') for data in doc.xpath(data_xpath): if counter <= 0: @@ -100,20 +119,3 @@ class AmazonEUBase(StorePlugin): def get_details(self, search_result, timeout): pass - -class AmazonITKindleStore(AmazonEUBase): - ''' - For comments on the implementation, please see amazon_plugin.py - ''' - - aff_id = {'tag': 'httpcharles07-21'} - store_link = ('http://www.amazon.it/ebooks-kindle/b?_encoding=UTF8&' - 'node=827182031&tag=%(tag)s&ie=UTF8&linkCode=ur2&camp=3370&creative=23322') - store_link_details = ('http://www.amazon.it/gp/redirect.html?ie=UTF8&' - 'location=http://www.amazon.it/dp/%(asin)s&tag=%(tag)s&' - 'linkCode=ur2&camp=3370&creative=23322') - search_url = 'http://www.amazon.it/s/?url=search-alias%3Ddigital-text&field-keywords=' - - author_article = 'di ' - - and_word = ' e ' \ No newline at end of file diff --git a/src/calibre/gui2/store/stores/amazon_plugin.py b/src/calibre/gui2/store/stores/amazon_plugin.py index a236823ddb..33f8f9b048 100644 --- a/src/calibre/gui2/store/stores/amazon_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 3 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -129,12 +129,12 @@ class AmazonKindleStore(StorePlugin): doc = html.fromstring(f.read().decode('latin-1', 'replace')) data_xpath = '//div[contains(@class, "prod")]' - format_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()' + format_xpath = './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()' asin_xpath = '@name' cover_xpath = './/img[@class="productImage"]/@src' title_xpath = './/h3[@class="newaps"]/a//text()' author_xpath = './/h3[@class="newaps"]//span[contains(@class, "reg")]//text()' - price_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and contains(@class, "bld")]/text()' + price_xpath = './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]//span[contains(@class, "lrg") and contains(@class, "bld")]/text()' for data in doc.xpath(data_xpath): if counter <= 0: diff --git a/src/calibre/gui2/store/stores/amazon_uk_plugin.py b/src/calibre/gui2/store/stores/amazon_uk_plugin.py index b5951a533f..f6082ac790 100644 --- a/src/calibre/gui2/store/stores/amazon_uk_plugin.py +++ b/src/calibre/gui2/store/stores/amazon_uk_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 3 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -19,11 +19,28 @@ from calibre.gui2.store import StorePlugin from calibre.gui2.store.search_result import SearchResult -# This class is copy/pasted from amason_uk_plugin. Do not modify it in any -# other amazon EU plugin. Be sure to paste it into all other amazon EU plugins -# when modified. -class AmazonEUBase(StorePlugin): +class AmazonUKKindleStore(StorePlugin): + aff_id = {'tag': 'calcharles-21'} + store_link = ('http://www.amazon.co.uk/gp/redirect.html?ie=UTF8&' + 'location=http://www.amazon.co.uk/Kindle-eBooks/b?' + 'ie=UTF8&node=341689031&ref_=sa_menu_kbo2&tag=%(tag)s&' + 'linkCode=ur2&camp=1634&creative=19450') + store_link_details = ('http://www.amazon.co.uk/gp/redirect.html?ie=UTF8&' + 'location=http://www.amazon.co.uk/dp/%(asin)s&tag=%(tag)s&' + 'linkCode=ur2&camp=1634&creative=6738') + search_url = 'http://www.amazon.co.uk/s/?url=search-alias%3Ddigital-text&field-keywords=' + + author_article = 'by ' + + and_word = ' and ' + + # This code is copy/pasted from from here to the other amazon EU. Do not + # modify it in any other amazon EU plugin. Be sure to paste it into all + # other amazon EU plugins when modified. + + # ---- Copy from here to end + ''' For comments on the implementation, please see amazon_plugin.py ''' @@ -45,12 +62,18 @@ class AmazonEUBase(StorePlugin): doc = html.fromstring(f.read())#.decode('latin-1', 'replace')) data_xpath = '//div[contains(@class, "prod")]' - format_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()' + # Results can be in a grid (table) or a column + format_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and not(contains(@class, "bld"))]/text()') asin_xpath = '@name' cover_xpath = './/img[@class="productImage"]/@src' title_xpath = './/h3[@class="newaps"]/a//text()' author_xpath = './/h3[@class="newaps"]//span[contains(@class, "reg")]//text()' - price_xpath = './/ul[contains(@class, "rsltL")]//span[contains(@class, "lrg") and contains(@class, "bld")]/text()' + # Results can be in a grid (table) or a column + price_xpath = ( + './/ul[contains(@class, "rsltL") or contains(@class, "rsltGridList")]' + '//span[contains(@class, "lrg") and contains(@class, "bld")]/text()') for data in doc.xpath(data_xpath): if counter <= 0: @@ -101,18 +124,3 @@ class AmazonEUBase(StorePlugin): def get_details(self, search_result, timeout): pass -class AmazonUKKindleStore(AmazonEUBase): - aff_id = {'tag': 'calcharles-21'} - store_link = ('http://www.amazon.co.uk/gp/redirect.html?ie=UTF8&' - 'location=http://www.amazon.co.uk/Kindle-eBooks/b?' - 'ie=UTF8&node=341689031&ref_=sa_menu_kbo2&tag=%(tag)s&' - 'linkCode=ur2&camp=1634&creative=19450') - store_link_details = ('http://www.amazon.co.uk/gp/redirect.html?ie=UTF8&' - 'location=http://www.amazon.co.uk/dp/%(asin)s&tag=%(tag)s&' - 'linkCode=ur2&camp=1634&creative=6738') - search_url = 'http://www.amazon.co.uk/s/?url=search-alias%3Ddigital-text&field-keywords=' - - author_article = 'by ' - - and_word = ' and ' - diff --git a/src/calibre/gui2/store/stores/bewrite_plugin.py b/src/calibre/gui2/store/stores/bewrite_plugin.py deleted file mode 100644 index 3ccd28d976..0000000000 --- a/src/calibre/gui2/store/stores/bewrite_plugin.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- - -from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading - -__license__ = 'GPL 3' -__copyright__ = '2011, John Schember ' -__docformat__ = 'restructuredtext en' - -import urllib2 -from contextlib import closing - -from lxml import html - -from PyQt4.Qt import QUrl - -from calibre import browser, url_slash_cleaner -from calibre.gui2 import open_url -from calibre.gui2.store import StorePlugin -from calibre.gui2.store.basic_config import BasicStoreConfig -from calibre.gui2.store.search_result import SearchResult -from calibre.gui2.store.web_store_dialog import WebStoreDialog - -class BeWriteStore(BasicStoreConfig, StorePlugin): - - def open(self, parent=None, detail_item=None, external=False): - url = 'http://www.bewrite.net/mm5/merchant.mvc?Screen=SFNT' - - if external or self.config.get('open_external', False): - open_url(QUrl(url_slash_cleaner(detail_item if detail_item else url))) - else: - d = WebStoreDialog(self.gui, url, parent, detail_item) - d.setWindowTitle(self.name) - d.set_tags(self.config.get('tags', '')) - d.exec_() - - def search(self, query, max_results=10, timeout=60): - url = 'http://www.bewrite.net/mm5/merchant.mvc?Search_Code=B&Screen=SRCH&Search=' + urllib2.quote(query) - - br = browser() - - counter = max_results - with closing(br.open(url, timeout=timeout)) as f: - doc = html.fromstring(f.read()) - for data in doc.xpath('//div[@id="content"]//table/tr[position() > 1]'): - if counter <= 0: - break - - id = ''.join(data.xpath('.//a/@href')) - if not id: - continue - - heading = ''.join(data.xpath('./td[2]//text()')) - title, q, author = heading.partition('by ') - cover_url = '' - price = '' - - counter -= 1 - - s = SearchResult() - s.cover_url = cover_url.strip() - s.title = title.strip() - s.author = author.strip() - s.price = price.strip() - s.detail_item = id.strip() - s.drm = SearchResult.DRM_UNLOCKED - - yield s - - def get_details(self, search_result, timeout): - br = browser() - - with closing(br.open(search_result.detail_item, timeout=timeout)) as nf: - idata = html.fromstring(nf.read()) - - price = ''.join(idata.xpath('//div[@id="content"]//td[contains(text(), "ePub")]/text()')) - if not price: - price = ''.join(idata.xpath('//div[@id="content"]//td[contains(text(), "MOBI")]/text()')) - if not price: - price = ''.join(idata.xpath('//div[@id="content"]//td[contains(text(), "PDF")]/text()')) - price = '$' + price.split('$')[-1] - search_result.price = price.strip() - - cover_img = idata.xpath('//div[@id="content"]//img/@src') - if cover_img: - for i in cover_img: - if '00001' in i: - cover_url = 'http://www.bewrite.net/mm5/' + i - search_result.cover_url = cover_url.strip() - break - - formats = set([]) - if idata.xpath('boolean(//div[@id="content"]//td[contains(text(), "ePub")])'): - formats.add('EPUB') - if idata.xpath('boolean(//div[@id="content"]//td[contains(text(), "PDF")])'): - formats.add('PDF') - if idata.xpath('boolean(//div[@id="content"]//td[contains(text(), "MOBI")])'): - formats.add('MOBI') - search_result.formats = ', '.join(list(formats)) - - return True diff --git a/src/calibre/gui2/store/stores/bn_plugin.py b/src/calibre/gui2/store/stores/bn_plugin.py index 6138181fde..b775ca21e2 100644 --- a/src/calibre/gui2/store/stores/bn_plugin.py +++ b/src/calibre/gui2/store/stores/bn_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 2 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -44,7 +44,7 @@ class BNStore(BasicStoreConfig, StorePlugin): with closing(br.open(url, timeout=timeout)) as f: raw = f.read() doc = html.fromstring(raw) - for data in doc.xpath('//ul[contains(@class, "result-set")]/li[contains(@class, "result")]'): + for data in doc.xpath('//ol[contains(@class, "result-set")]/li[contains(@class, "result")]'): if counter <= 0: break diff --git a/src/calibre/gui2/store/stores/gutenberg_plugin.py b/src/calibre/gui2/store/stores/gutenberg_plugin.py index 422165f263..b057cfe50f 100644 --- a/src/calibre/gui2/store/stores/gutenberg_plugin.py +++ b/src/calibre/gui2/store/stores/gutenberg_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 2 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -15,7 +15,7 @@ from lxml import html from PyQt4.Qt import QUrl -from calibre import browser, url_slash_cleaner +from calibre import browser, random_user_agent, url_slash_cleaner from calibre.gui2 import open_url from calibre.gui2.store import StorePlugin from calibre.gui2.store.basic_config import BasicStoreConfig @@ -41,7 +41,7 @@ class GutenbergStore(BasicStoreConfig, StorePlugin): def search(self, query, max_results=10, timeout=60): url = 'http://m.gutenberg.org/ebooks/search.mobile/?default_prefix=all&sort_order=title&query=' + urllib.quote_plus(query) - br = browser() + br = browser(user_agent=random_user_agent()) counter = max_results with closing(br.open(url, timeout=timeout)) as f: @@ -72,7 +72,7 @@ class GutenbergStore(BasicStoreConfig, StorePlugin): def get_details(self, search_result, timeout): url = url_slash_cleaner('http://m.gutenberg.org/' + search_result.detail_item) - br = browser() + br = browser(user_agent=random_user_agent()) with closing(br.open(url, timeout=timeout)) as nf: doc = html.fromstring(nf.read()) diff --git a/src/calibre/gui2/store/stores/nexto_plugin.py b/src/calibre/gui2/store/stores/nexto_plugin.py index df3867ec1a..813a31b4c2 100644 --- a/src/calibre/gui2/store/stores/nexto_plugin.py +++ b/src/calibre/gui2/store/stores/nexto_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 2 # Needed for dynamic plugin loading +store_version = 3 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011-2013, Tomasz Długosz ' @@ -67,7 +67,7 @@ class NextoStore(BasicStoreConfig, StorePlugin): cover_url = ''.join(data.xpath('.//img[@class="cover"]/@src')) cover_url = re.sub(r'%2F', '/', cover_url) - cover_url = re.sub(r'\widthMax=120&heightMax=200', 'widthMax=64&heightMax=64', cover_url) + cover_url = re.sub(r'widthMax=120&heightMax=200', 'widthMax=64&heightMax=64', cover_url) title = ''.join(data.xpath('.//a[@class="title"]/text()')) title = re.sub(r' - ebook$', '', title) formats = ', '.join(data.xpath('.//ul[@class="formats_available"]/li//b/text()')) @@ -82,7 +82,7 @@ class NextoStore(BasicStoreConfig, StorePlugin): counter -= 1 s = SearchResult() - s.cover_url = 'http://www.nexto.pl' + cover_url + s.cover_url = cover_url if cover_url[:4] == 'http' else 'http://www.nexto.pl' + cover_url s.title = title.strip() s.author = author.strip() s.price = price diff --git a/src/calibre/gui2/store/stores/virtualo_plugin.py b/src/calibre/gui2/store/stores/virtualo_plugin.py index 567da2df4e..86824b5542 100644 --- a/src/calibre/gui2/store/stores/virtualo_plugin.py +++ b/src/calibre/gui2/store/stores/virtualo_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 2 # Needed for dynamic plugin loading +store_version = 3 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011-2013, Tomasz Długosz ' @@ -41,7 +41,7 @@ class VirtualoStore(BasicStoreConfig, StorePlugin): url = 'http://virtualo.pl/?q=' + urllib.quote(query) + '&f=format_id:4,6,3' br = browser() - no_drm_pattern = re.compile("Znak wodny") + no_drm_pattern = re.compile(r'Znak wodny|Brak') counter = max_results with closing(br.open(url, timeout=timeout)) as f: @@ -58,8 +58,8 @@ class VirtualoStore(BasicStoreConfig, StorePlugin): cover_url = ''.join(data.xpath('.//div[@class="list_middle_left"]//a//img/@src')) title = ''.join(data.xpath('.//div[@class="list_title list_text_left"]/a/text()')) author = ', '.join(data.xpath('.//div[@class="list_authors list_text_left"]/a/text()')) - formats = [ form.split('_')[-1].replace('.png', '') for form in data.xpath('.//div[@style="width:55%;float:left;text-align:left;height:18px;"]//a/img/@src')] - nodrm = no_drm_pattern.search(''.join(data.xpath('.//div[@style="width:45%;float:right;text-align:right;height:18px;"]/div/div/text()'))) + formats = [ form.split('_')[-1].replace('.png', '') for form in data.xpath('.//div[@style="width:55%;float:left;text-align:left;height:18px;"]//a/span/img/@src')] + nodrm = no_drm_pattern.search(''.join(data.xpath('.//div[@style="width:45%;float:right;text-align:right;height:18px;"]//span[@class="prompt_preview"]/text()'))) counter -= 1 @@ -70,6 +70,6 @@ class VirtualoStore(BasicStoreConfig, StorePlugin): s.price = price + ' zł' s.detail_item = 'http://virtualo.pl' + id.strip().split('http://')[0] s.formats = ', '.join(formats).upper() - s.drm = SearchResult.DRM_UNLOCKED if nodrm else SearchResult.DRM_UNKNOWN + s.drm = SearchResult.DRM_UNLOCKED if nodrm else SearchResult.DRM_LOCKED yield s diff --git a/src/calibre/gui2/store/stores/waterstones_uk_plugin.py b/src/calibre/gui2/store/stores/waterstones_uk_plugin.py index 1bcbb865bf..5875119401 100644 --- a/src/calibre/gui2/store/stores/waterstones_uk_plugin.py +++ b/src/calibre/gui2/store/stores/waterstones_uk_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import (unicode_literals, division, absolute_import, print_function) -store_version = 1 # Needed for dynamic plugin loading +store_version = 2 # Needed for dynamic plugin loading __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' @@ -24,8 +24,8 @@ from calibre.gui2.store.web_store_dialog import WebStoreDialog class WaterstonesUKStore(BasicStoreConfig, StorePlugin): def open(self, parent=None, detail_item=None, external=False): - url = 'http://clkuk.tradedoubler.com/click?p=51196&a=1951604&g=19333484' - url_details = 'http://clkuk.tradedoubler.com/click?p(51196)a(1951604)g(16460516)url({0})' + url = 'http://www.awin1.com/awclick.php?mid=3787&id=120917' + url_details = 'http://www.awin1.com/cread.php?awinmid=3787&awinaffid=120917&clickref=&p={0}' if external or self.config.get('open_external', False): if detail_item: diff --git a/src/calibre/gui2/toc/main.py b/src/calibre/gui2/toc/main.py index 954f70974c..90d9a8f4a8 100644 --- a/src/calibre/gui2/toc/main.py +++ b/src/calibre/gui2/toc/main.py @@ -14,11 +14,11 @@ from functools import partial from PyQt4.Qt import (QPushButton, QFrame, QVariant, QMenu, QInputDialog, QDialog, QVBoxLayout, QDialogButtonBox, QSize, QStackedWidget, QWidget, QLabel, Qt, pyqtSignal, QIcon, QTreeWidget, QGridLayout, QTreeWidgetItem, - QToolButton, QItemSelectionModel) + QToolButton, QItemSelectionModel, QCursor) from calibre.ebooks.oeb.polish.container import get_container, AZW3Container from calibre.ebooks.oeb.polish.toc import ( - get_toc, add_id, TOC, commit_toc, from_xpaths, from_links) + get_toc, add_id, TOC, commit_toc, from_xpaths, from_links, from_files) from calibre.gui2 import Application, error_dialog, gprefs from calibre.gui2.progress_indicator import ProgressIndicator from calibre.gui2.toc.location import ItemEdit @@ -126,6 +126,7 @@ class ItemView(QFrame): # {{{ go_to_root = pyqtSignal() create_from_xpath = pyqtSignal(object) create_from_links = pyqtSignal() + create_from_files = pyqtSignal() flatten_toc = pyqtSignal() def __init__(self, parent): @@ -183,6 +184,15 @@ class ItemView(QFrame): # {{{ ))) l.addWidget(b) + self.cfb = b = QPushButton(_('Generate ToC from &files')) + b.clicked.connect(self.create_from_files) + b.setToolTip(textwrap.fill(_( + 'Generate a Table of Contents from individual files in the book.' + ' Each entry in the ToC will point to the start of the file, the' + ' text of the entry will be the "first line" of text from the file.' + ))) + l.addWidget(b) + self.xpb = b = QPushButton(_('Generate ToC from &XPath')) b.clicked.connect(self.create_from_user_xpath) b.setToolTip(textwrap.fill(_( @@ -190,7 +200,7 @@ class ItemView(QFrame): # {{{ ))) l.addWidget(b) - self.fal = b = QPushButton(_('Flatten the ToC')) + self.fal = b = QPushButton(_('&Flatten the ToC')) b.clicked.connect(self.flatten_toc) b.setToolTip(textwrap.fill(_( 'Flatten the Table of Contents, putting all entries at the top level' @@ -339,6 +349,185 @@ class ItemView(QFrame): # {{{ # }}} +class TreeWidget(QTreeWidget): # {{{ + + def __init__(self, parent): + QTreeWidget.__init__(self, parent) + self.setHeaderLabel(_('Table of Contents')) + self.setIconSize(QSize(ICON_SIZE, ICON_SIZE)) + self.setDragEnabled(True) + self.setSelectionMode(self.ExtendedSelection) + self.viewport().setAcceptDrops(True) + self.setDropIndicatorShown(True) + self.setDragDropMode(self.InternalMove) + self.setAutoScroll(True) + self.setAutoScrollMargin(ICON_SIZE*2) + self.setDefaultDropAction(Qt.MoveAction) + self.setAutoExpandDelay(1000) + self.setAnimated(True) + self.setMouseTracking(True) + self.in_drop_event = False + self.root = self.invisibleRootItem() + self.setContextMenuPolicy(Qt.CustomContextMenu) + self.customContextMenuRequested.connect(self.show_context_menu) + + def iteritems(self, parent=None): + if parent is None: + parent = self.invisibleRootItem() + for i in xrange(parent.childCount()): + child = parent.child(i) + yield child + for gc in self.iteritems(parent=child): + yield gc + + def dropEvent(self, event): + self.in_drop_event = True + try: + super(TreeWidget, self).dropEvent(event) + finally: + self.in_drop_event = False + + def selectedIndexes(self): + ans = super(TreeWidget, self).selectedIndexes() + if self.in_drop_event: + # For order to be be preserved when moving by drag and drop, we + # have to ensure that selectedIndexes returns an ordered list of + # indexes. + sort_map = {self.indexFromItem(item):i for i, item in enumerate(self.iteritems())} + ans = sorted(ans, key=lambda x:sort_map.get(x, -1), reverse=True) + return ans + + def highlight_item(self, item): + self.setCurrentItem(item, 0, QItemSelectionModel.ClearAndSelect) + self.scrollToItem(item) + + def move_left(self): + item = self.currentItem() + if item is not None: + parent = item.parent() + if parent is not None: + is_expanded = item.isExpanded() or item.childCount() == 0 + gp = parent.parent() or self.invisibleRootItem() + idx = gp.indexOfChild(parent) + for gc in [parent.child(i) for i in xrange(parent.indexOfChild(item)+1, parent.childCount())]: + parent.removeChild(gc) + item.addChild(gc) + parent.removeChild(item) + gp.insertChild(idx+1, item) + if is_expanded: + self.expandItem(item) + self.highlight_item(item) + + def move_right(self): + item = self.currentItem() + if item is not None: + parent = item.parent() or self.invisibleRootItem() + idx = parent.indexOfChild(item) + if idx > 0: + is_expanded = item.isExpanded() + np = parent.child(idx-1) + parent.removeChild(item) + np.addChild(item) + if is_expanded: + self.expandItem(item) + self.highlight_item(item) + + def move_down(self): + item = self.currentItem() + if item is None: + if self.root.childCount() == 0: + return + item = self.root.child(0) + self.highlight_item(item) + return + parent = item.parent() or self.root + idx = parent.indexOfChild(item) + if idx == parent.childCount() - 1: + # At end of parent, need to become sibling of parent + if parent is self.root: + return + gp = parent.parent() or self.root + parent.removeChild(item) + gp.insertChild(gp.indexOfChild(parent)+1, item) + else: + sibling = parent.child(idx+1) + parent.removeChild(item) + sibling.insertChild(0, item) + self.highlight_item(item) + + def move_up(self): + item = self.currentItem() + if item is None: + if self.root.childCount() == 0: + return + item = self.root.child(self.root.childCount()-1) + self.highlight_item(item) + return + parent = item.parent() or self.root + idx = parent.indexOfChild(item) + if idx == 0: + # At end of parent, need to become sibling of parent + if parent is self.root: + return + gp = parent.parent() or self.root + parent.removeChild(item) + gp.insertChild(gp.indexOfChild(parent), item) + else: + sibling = parent.child(idx-1) + parent.removeChild(item) + sibling.addChild(item) + self.highlight_item(item) + + def del_items(self): + for item in self.selectedItems(): + p = item.parent() or self.root + p.removeChild(item) + + def title_case(self): + from calibre.utils.titlecase import titlecase + for item in self.selectedItems(): + t = unicode(item.data(0, Qt.DisplayRole).toString()) + item.setData(0, Qt.DisplayRole, titlecase(t)) + + def keyPressEvent(self, ev): + if ev.key() == Qt.Key_Left and ev.modifiers() & Qt.CTRL: + self.move_left() + ev.accept() + elif ev.key() == Qt.Key_Right and ev.modifiers() & Qt.CTRL: + self.move_right() + ev.accept() + elif ev.key() == Qt.Key_Up and ev.modifiers() & Qt.CTRL: + self.move_up() + ev.accept() + elif ev.key() == Qt.Key_Down and ev.modifiers() & Qt.CTRL: + self.move_down() + ev.accept() + elif ev.key() in (Qt.Key_Delete, Qt.Key_Backspace): + self.del_items() + ev.accept() + else: + return super(TreeWidget, self).keyPressEvent(ev) + + def show_context_menu(self, point): + item = self.currentItem() + if item is not None: + m = QMenu() + ci = unicode(item.data(0, Qt.DisplayRole).toString()) + p = item.parent() or self.invisibleRootItem() + idx = p.indexOfChild(item) + if idx > 0: + m.addAction(QIcon(I('arrow-up.png')), _('Move "%s" up')%ci, self.move_up) + if idx + 1 < p.childCount(): + m.addAction(QIcon(I('arrow-down.png')), _('Move "%s" down')%ci, self.move_down) + m.addAction(QIcon(I('trash.png')), _('Remove all selected items'), self.del_items) + if item.parent() is not None: + m.addAction(QIcon(I('back.png')), _('Unindent "%s"')%ci, self.move_left) + if idx > 0: + m.addAction(QIcon(I('forward.png')), _('Indent "%s"')%ci, self.move_right) + m.addAction(_('Change all selected items to title case'), self.title_case) + m.exec_(QCursor.pos()) +# }}} + class TOCView(QWidget): # {{{ add_new_item = pyqtSignal(object, object) @@ -347,41 +536,44 @@ class TOCView(QWidget): # {{{ QWidget.__init__(self, parent) l = self.l = QGridLayout() self.setLayout(l) - self.tocw = t = QTreeWidget(self) - t.setHeaderLabel(_('Table of Contents')) - t.setIconSize(QSize(ICON_SIZE, ICON_SIZE)) - t.setDragEnabled(True) - t.setSelectionMode(t.ExtendedSelection) - t.viewport().setAcceptDrops(True) - t.setDropIndicatorShown(True) - t.setDragDropMode(t.InternalMove) - t.setAutoScroll(True) - t.setAutoScrollMargin(ICON_SIZE*2) - t.setDefaultDropAction(Qt.MoveAction) - t.setAutoExpandDelay(1000) - t.setAnimated(True) - t.setMouseTracking(True) - l.addWidget(t, 0, 0, 5, 3) + self.tocw = t = TreeWidget(self) + l.addWidget(t, 0, 0, 7, 3) self.up_button = b = QToolButton(self) b.setIcon(QIcon(I('arrow-up.png'))) b.setIconSize(QSize(ICON_SIZE, ICON_SIZE)) l.addWidget(b, 0, 3) - b.setToolTip(_('Move current entry up')) + b.setToolTip(_('Move current entry up [Ctrl+Up]')) b.clicked.connect(self.move_up) + + self.left_button = b = QToolButton(self) + b.setIcon(QIcon(I('back.png'))) + b.setIconSize(QSize(ICON_SIZE, ICON_SIZE)) + l.addWidget(b, 2, 3) + b.setToolTip(_('Unindent the current entry [Ctrl+Left]')) + b.clicked.connect(self.tocw.move_left) + self.del_button = b = QToolButton(self) b.setIcon(QIcon(I('trash.png'))) b.setIconSize(QSize(ICON_SIZE, ICON_SIZE)) - l.addWidget(b, 2, 3) + l.addWidget(b, 3, 3) b.setToolTip(_('Remove all selected entries')) b.clicked.connect(self.del_items) + + self.right_button = b = QToolButton(self) + b.setIcon(QIcon(I('forward.png'))) + b.setIconSize(QSize(ICON_SIZE, ICON_SIZE)) + l.addWidget(b, 4, 3) + b.setToolTip(_('Indent the current entry [Ctrl+Right]')) + b.clicked.connect(self.tocw.move_right) + self.down_button = b = QToolButton(self) b.setIcon(QIcon(I('arrow-down.png'))) b.setIconSize(QSize(ICON_SIZE, ICON_SIZE)) - l.addWidget(b, 4, 3) - b.setToolTip(_('Move current entry down')) + l.addWidget(b, 6, 3) + b.setToolTip(_('Move current entry down [Ctrl+Down]')) b.clicked.connect(self.move_down) self.expand_all_button = b = QPushButton(_('&Expand all')) - col = 5 + col = 7 l.addWidget(b, col, 0) b.clicked.connect(self.tocw.expandAll) self.collapse_all_button = b = QPushButton(_('&Collapse all')) @@ -395,6 +587,7 @@ class TOCView(QWidget): # {{{ i.add_new_item.connect(self.add_new_item) i.create_from_xpath.connect(self.create_from_xpath) i.create_from_links.connect(self.create_from_links) + i.create_from_files.connect(self.create_from_files) i.flatten_item.connect(self.flatten_item) i.flatten_toc.connect(self.flatten_toc) i.go_to_root.connect(self.go_to_root) @@ -412,9 +605,7 @@ class TOCView(QWidget): # {{{ return unicode(item.data(0, Qt.DisplayRole).toString()) def del_items(self): - for item in self.tocw.selectedItems(): - p = item.parent() or self.root - p.removeChild(item) + self.tocw.del_items() def delete_current_item(self): item = self.tocw.currentItem() @@ -423,13 +614,8 @@ class TOCView(QWidget): # {{{ p.removeChild(item) def iteritems(self, parent=None): - if parent is None: - parent = self.root - for i in xrange(parent.childCount()): - child = parent.child(i) - yield child - for gc in self.iteritems(parent=child): - yield gc + for item in self.tocw.iteritems(parent=parent): + yield item def flatten_toc(self): found = True @@ -457,54 +643,13 @@ class TOCView(QWidget): # {{{ self.tocw.setCurrentItem(None) def highlight_item(self, item): - self.tocw.setCurrentItem(item, 0, QItemSelectionModel.ClearAndSelect) - self.tocw.scrollToItem(item) - - def move_down(self): - item = self.tocw.currentItem() - if item is None: - if self.root.childCount() == 0: - return - item = self.root.child(0) - self.highlight_item(item) - return - parent = item.parent() or self.root - idx = parent.indexOfChild(item) - if idx == parent.childCount() - 1: - # At end of parent, need to become sibling of parent - if parent is self.root: - return - gp = parent.parent() or self.root - parent.removeChild(item) - gp.insertChild(gp.indexOfChild(parent)+1, item) - else: - sibling = parent.child(idx+1) - parent.removeChild(item) - sibling.insertChild(0, item) - self.highlight_item(item) + self.tocw.highlight_item(item) def move_up(self): - item = self.tocw.currentItem() - if item is None: - if self.root.childCount() == 0: - return - item = self.root.child(self.root.childCount()-1) - self.highlight_item(item) - return - parent = item.parent() or self.root - idx = parent.indexOfChild(item) - if idx == 0: - # At end of parent, need to become sibling of parent - if parent is self.root: - return - gp = parent.parent() or self.root - parent.removeChild(item) - gp.insertChild(gp.indexOfChild(parent), item) - else: - sibling = parent.child(idx-1) - parent.removeChild(item) - sibling.addChild(item) - self.highlight_item(item) + self.tocw.move_up() + + def move_down(self): + self.tocw.move_down() def update_status_tip(self, item): c = item.data(0, Qt.UserRole).toPyObject() @@ -644,6 +789,14 @@ class TOCView(QWidget): # {{{ _('No links were found that could be added to the Table of Contents.'), show=True) self.insert_toc_fragment(toc) + def create_from_files(self): + toc = from_files(self.ebook) + if len(toc) == 0: + return error_dialog(self, _('No items found'), + _('No files were found that could be added to the Table of Contents.'), show=True) + self.insert_toc_fragment(toc) + + # }}} class TOCEditor(QDialog): # {{{ diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py index 58175f215b..b3737d15fa 100644 --- a/src/calibre/library/cli.py +++ b/src/calibre/library/cli.py @@ -54,7 +54,7 @@ def get_parser(usage): def get_db(dbpath, options): global do_notify if options.library_path is not None: - dbpath = options.library_path + dbpath = os.path.expanduser(options.library_path) if dbpath is None: raise ValueError('No saved library path, either run the GUI or use the' ' --with-library option') @@ -88,7 +88,7 @@ def do_list(db, fields, afields, sort_by, ascending, search_text, line_width, se for f in data: fmts = [x for x in f['formats'] if x is not None] f['formats'] = u'[%s]'%u','.join(fmts) - widths = list(map(lambda x : 0, fields)) + widths = list(map(lambda x: 0, fields)) for record in data: for f in record.keys(): if hasattr(record[f], 'isoformat'): @@ -164,7 +164,8 @@ List the books available in the calibre database. parser.add_option('--ascending', default=False, action='store_true', help=_('Sort results in ascending order')) parser.add_option('-s', '--search', default=None, - help=_('Filter the results by the search query. For the format of the search query, please see the search related documentation in the User Manual. Default is to do no filtering.')) + help=_('Filter the results by the search query. For the format of the search query,' + ' please see the search related documentation in the User Manual. Default is to do no filtering.')) parser.add_option('-w', '--line-width', default=-1, type=int, help=_('The maximum width of a single line in the output. Defaults to detecting screen size.')) parser.add_option('--separator', default=' ', help=_('The string used to separate fields. Default is a space.')) @@ -244,7 +245,8 @@ def do_add(db, paths, one_book_per_directory, recurse, add_duplicates, otitle, mi.authors = [_('Unknown')] for x in ('title', 'authors', 'isbn', 'tags', 'series'): val = locals()['o'+x] - if val: setattr(mi, x, val) + if val: + setattr(mi, x, val) if oseries: mi.series_index = oseries_index if ocover: @@ -425,18 +427,26 @@ def command_remove(args, dbpath): return 0 -def do_add_format(db, id, fmt, path): - db.add_format_with_hooks(id, fmt.upper(), path, index_is_id=True) - send_message() +def do_add_format(db, id, fmt, path, opts): + done = db.add_format_with_hooks(id, fmt.upper(), path, index_is_id=True, + replace=opts.replace) + if not done and not opts.replace: + prints(_('A %s file already exists for book: %d, not replacing')%(fmt.upper(), id)) + else: + send_message() def add_format_option_parser(): - return get_parser(_( + parser = get_parser(_( '''\ %prog add_format [options] id ebook_file Add the ebook in ebook_file to the available formats for the logical book identified \ -by id. You can get id by using the list command. If the format already exists, it is replaced. +by id. You can get id by using the list command. If the format already exists, \ +it is replaced, unless the do not replace option is specified.\ ''')) + parser.add_option('--dont-replace', dest='replace', default=True, action='store_false', + help=_('Do not replace the format if it already exists')) + return parser def command_add_format(args, dbpath): @@ -451,7 +461,7 @@ def command_add_format(args, dbpath): id, path, fmt = int(args[1]), args[2], os.path.splitext(args[2])[-1] if not fmt: print _('ebook file must have an extension') - do_add_format(get_db(dbpath, opts), id, fmt[1:], path) + do_add_format(get_db(dbpath, opts), id, fmt[1:], path, opts) return 0 def do_remove_format(db, id, fmt): @@ -791,7 +801,7 @@ def catalog_option_parser(args): if not file_extension in available_catalog_formats(): print_help(parser, log) log.error("No catalog plugin available for extension '%s'.\n" % file_extension + - "Catalog plugins available for %s\n" % ', '.join(available_catalog_formats()) ) + "Catalog plugins available for %s\n" % ', '.join(available_catalog_formats())) raise SystemExit(1) return output, file_extension @@ -1214,7 +1224,8 @@ def command_restore_database(args, dbpath): dbpath = dbpath.decode(preferred_encoding) class Progress(object): - def __init__(self): self.total = 1 + def __init__(self): + self.total = 1 def __call__(self, msg, step): if msg is None: @@ -1308,7 +1319,7 @@ def command_list_categories(args, dbpath): from calibre.utils.terminal import geometry, ColoredStream separator = ' ' - widths = list(map(lambda x : 0, fields)) + widths = list(map(lambda x: 0, fields)) for i in data: for j, field in enumerate(fields): widths[j] = max(widths[j], max(len(field), len(unicode(i[field])))) diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 914de2358b..8e57647452 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -205,7 +205,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): return row[loc] def initialize_dynamic(self): - self.field_metadata = FieldMetadata() #Ensure we start with a clean copy + self.field_metadata = FieldMetadata() # Ensure we start with a clean copy self.prefs = DBPrefs(self) defs = self.prefs.defaults defs['gui_restriction'] = defs['cs_restriction'] = '' @@ -352,7 +352,6 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): '''.format(_('News'))) self.conn.commit() - CustomColumns.__init__(self) template = '''\ (SELECT {query} FROM books_{table}_link AS link INNER JOIN @@ -444,7 +443,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): # Assumption is that someone else will fix them if they change. self.field_metadata.remove_dynamic_categories() for user_cat in sorted(self.prefs.get('user_categories', {}).keys(), key=sort_key): - cat_name = '@' + user_cat # add the '@' to avoid name collision + cat_name = '@' + user_cat # add the '@' to avoid name collision self.field_metadata.add_user_category(label=cat_name, name=user_cat) # add grouped search term user categories @@ -596,7 +595,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): current title and author. If there was a previous directory, its contents are copied and it is deleted. ''' - id = index if index_is_id else self.id(index) + id = index if index_is_id else self.id(index) path = self.construct_path_name(id) current_path = self.path(id, index_is_id=True).replace(os.sep, '/') formats = self.formats(id, index_is_id=True) @@ -620,7 +619,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if not os.path.exists(tpath): os.makedirs(tpath) - if source_ok: # Migrate existing files + if source_ok: # Migrate existing files self.copy_cover_to(id, os.path.join(tpath, 'cover.jpg'), index_is_id=True, windows_atomic_move=wam, use_hardlink=True) @@ -668,7 +667,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): os.rename(os.path.join(curpath, oldseg), os.path.join(curpath, newseg)) except: - break # Fail silently since nothing catastrophic has happened + break # Fail silently since nothing catastrophic has happened curpath = os.path.join(curpath, newseg) def add_listener(self, listener): @@ -727,7 +726,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): return ret def cover_last_modified(self, index, index_is_id=False): - id = index if index_is_id else self.id(index) + id = index if index_is_id else self.id(index) path = os.path.join(self.library_path, self.path(id, index_is_id=True), 'cover.jpg') try: return utcfromtimestamp(os.stat(path).st_mtime) @@ -1074,8 +1073,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): identical_book_ids = set([]) if mi.authors: try: - quathors = mi.authors[:10] # Too many authors causes parsing of - # the search expression to fail + quathors = mi.authors[:10] # Too many authors causes parsing of + # the search expression to fail query = u' and '.join([u'author:"=%s"'%(a.replace('"', '')) for a in quathors]) qauthors = mi.authors[10:] @@ -1307,7 +1306,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): return fmt_path try: candidates = glob.glob(os.path.join(path, '*'+format)) - except: # If path contains strange characters this throws an exc + except: # If path contains strange characters this throws an exc candidates = [] if format and candidates and os.path.exists(candidates[0]): try: @@ -1343,23 +1342,39 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if not isinstance(dest, basestring): raise Exception("Error, you must pass the dest as a path when" " using windows_atomic_move") - if dest and not samefile(dest, path): - windows_atomic_move.copy_path_to(path, dest) + if dest: + if samefile(path, dest): + # Ensure that the file has the same case as dest + try: + if path != dest: + os.rename(path, dest) + except: + pass # Nothing too catastrophic happened, the cases mismatch, that's all + else: + windows_atomic_move.copy_path_to(path, dest) else: if hasattr(dest, 'write'): with lopen(path, 'rb') as f: shutil.copyfileobj(f, dest) if hasattr(dest, 'flush'): dest.flush() - elif dest and not samefile(dest, path): - if use_hardlink: - try: - hardlink_file(path, dest) - return - except: - pass - with lopen(path, 'rb') as f, lopen(dest, 'wb') as d: - shutil.copyfileobj(f, d) + elif dest: + if samefile(dest, path): + if not self.is_case_sensitive and path != dest: + # Ensure that the file has the same case as dest + try: + os.rename(path, dest) + except: + pass # Nothing too catastrophic happened, the cases mismatch, that's all + else: + if use_hardlink: + try: + hardlink_file(path, dest) + return + except: + pass + with lopen(path, 'rb') as f, lopen(dest, 'wb') as d: + shutil.copyfileobj(f, d) def copy_cover_to(self, index, dest, index_is_id=False, windows_atomic_move=None, use_hardlink=False): @@ -1460,12 +1475,12 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): return ret def add_format_with_hooks(self, index, format, fpath, index_is_id=False, - path=None, notify=True): + path=None, notify=True, replace=True): npath = self.run_import_plugins(fpath, format) format = os.path.splitext(npath)[-1].lower().replace('.', '').upper() stream = lopen(npath, 'rb') format = check_ebook_format(stream, format) - retval = self.add_format(index, format, stream, + retval = self.add_format(index, format, stream, replace=replace, index_is_id=index_is_id, path=path, notify=notify) run_plugins_on_postimport(self, id, format) return retval @@ -1473,7 +1488,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): def add_format(self, index, format, stream, index_is_id=False, path=None, notify=True, replace=True, copy_function=None): id = index if index_is_id else self.id(index) - if not format: format = '' + if not format: + format = '' self.format_metadata_cache[id].pop(format.upper(), None) name = self.format_filename_cache[id].get(format.upper(), None) if path is None: @@ -1525,6 +1541,14 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): opath = self.format_abspath(book_id, nfmt, index_is_id=True) return fmt if opath is None else nfmt + def restore_original_format(self, book_id, original_fmt, notify=True): + opath = self.format_abspath(book_id, original_fmt, index_is_id=True) + if opath is not None: + fmt = original_fmt.partition('_')[2] + with lopen(opath, 'rb') as f: + self.add_format(book_id, fmt, f, index_is_id=True, notify=False) + self.remove_format(book_id, original_fmt, index_is_id=True, notify=notify) + def delete_book(self, id, notify=True, commit=True, permanent=False, do_clean=True): ''' @@ -1552,7 +1576,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): def remove_format(self, index, format, index_is_id=False, notify=True, commit=True, db_only=False): id = index if index_is_id else self.id(index) - if not format: format = '' + if not format: + format = '' self.format_metadata_cache[id].pop(format.upper(), None) name = self.format_filename_cache[id].get(format.upper(), None) if name: @@ -1721,12 +1746,12 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): # Get the ids for the item values if not cat['is_custom']: funcs = { - 'authors' : self.get_authors_with_ids, - 'series' : self.get_series_with_ids, + 'authors': self.get_authors_with_ids, + 'series': self.get_series_with_ids, 'publisher': self.get_publishers_with_ids, - 'tags' : self.get_tags_with_ids, + 'tags': self.get_tags_with_ids, 'languages': self.get_languages_with_ids, - 'rating' : self.get_ratings_with_ids, + 'rating': self.get_ratings_with_ids, } func = funcs.get(category, None) if func: @@ -1809,7 +1834,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): item.rc += 1 continue try: - (item_id, sort_val) = tid_cat[val] # let exceptions fly + (item_id, sort_val) = tid_cat[val] # let exceptions fly item = tcats_cat.get(val, None) if not item: item = tag_class(val, sort_val) @@ -1831,7 +1856,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): tid_cat[val] = (val, val) for val in vals: try: - (item_id, sort_val) = tid_cat[val] # let exceptions fly + (item_id, sort_val) = tid_cat[val] # let exceptions fly item = tcats_cat.get(val, None) if not item: item = tag_class(val, sort_val) @@ -1899,7 +1924,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): # in the main Tag loop. Saves a few % if datatype == 'rating': formatter = (lambda x:u'\u2605'*int(x/2)) - avgr = lambda x : x.n + avgr = lambda x: x.n # eliminate the zero ratings line as well as count == 0 items = [v for v in tcategories[category].values() if v.c > 0 and v.n != 0] elif category == 'authors': @@ -1916,7 +1941,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): # sort the list if sort == 'name': - kf = lambda x :sort_key(x.s) + kf = lambda x:sort_key(x.s) reverse=False elif sort == 'popularity': kf = lambda x: x.c @@ -1981,9 +2006,9 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if sort == 'popularity': categories['formats'].sort(key=lambda x: x.count, reverse=True) - else: # no ratings exist to sort on + else: # no ratings exist to sort on # No need for ICU here. - categories['formats'].sort(key = lambda x:x.name) + categories['formats'].sort(key=lambda x:x.name) # Now do identifiers. This works like formats categories['identifiers'] = [] @@ -2010,9 +2035,9 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if sort == 'popularity': categories['identifiers'].sort(key=lambda x: x.count, reverse=True) - else: # no ratings exist to sort on + else: # no ratings exist to sort on # No need for ICU here. - categories['identifiers'].sort(key = lambda x:x.name) + categories['identifiers'].sort(key=lambda x:x.name) #### Now do the user-defined categories. #### user_categories = dict.copy(self.clean_user_categories()) @@ -2059,7 +2084,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): else: items.append(taglist[label][n]) # else: do nothing, to not include nodes w zero counts - cat_name = '@' + user_cat # add the '@' to avoid name collision + cat_name = '@' + user_cat # add the '@' to avoid name collision # Not a problem if we accumulate entries in the icon map if icon_map is not None: icon_map[cat_name] = icon_map['user:'] @@ -2307,11 +2332,10 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): elif mi_idents: identifiers = self.get_identifiers(id, index_is_id=True) for key, val in mi_idents.iteritems(): - if val and val.strip(): # Don't delete an existing identifier + if val and val.strip(): # Don't delete an existing identifier identifiers[icu_lower(key)] = val self.set_identifiers(id, identifiers, notify=False, commit=False) - user_mi = mi.get_all_user_metadata(make_copy=False) for key in user_mi.iterkeys(): if key in self.field_metadata and \ @@ -2431,7 +2455,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): try: self.conn.execute('''INSERT INTO books_authors_link(book, author) VALUES (?,?)''', (id, aid)) - except IntegrityError: # Sometimes books specify the same author twice in their metadata + except IntegrityError: # Sometimes books specify the same author twice in their metadata pass if case_change: bks = self.conn.get('''SELECT book FROM books_authors_link @@ -2590,7 +2614,6 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if notify: self.notify('metadata', [id]) - def set_publisher(self, id, publisher, notify=True, commit=True, allow_case_change=False): self.conn.execute('DELETE FROM books_publishers_link WHERE book=?',(id,)) @@ -2796,7 +2819,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if new_id is None or old_id == new_id: new_id = old_id # New name doesn't exist. Simply change the old name - self.conn.execute('UPDATE publishers SET name=? WHERE id=?', \ + self.conn.execute('UPDATE publishers SET name=? WHERE id=?', (new_name, old_id)) else: # Change the link table to point at the new one @@ -2836,7 +2859,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): self.conn.commit() def set_sort_field_for_author(self, old_id, new_sort, commit=True, notify=False): - self.conn.execute('UPDATE authors SET sort=? WHERE id=?', \ + self.conn.execute('UPDATE authors SET sort=? WHERE id=?', (new_sort.strip(), old_id)) if commit: self.conn.commit() @@ -2935,7 +2958,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): @classmethod def cleanup_tags(cls, tags): tags = [x.strip().replace(',', ';') for x in tags if x.strip()] - tags = [x.decode(preferred_encoding, 'replace') \ + tags = [x.decode(preferred_encoding, 'replace') if isbytestring(x) else x for x in tags] tags = [u' '.join(x.split()) for x in tags] ans, seen = [], set([]) @@ -3336,10 +3359,9 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): self.add_format(db_id, format, stream, index_is_id=True) self.conn.commit() - self.data.refresh_ids(self, [db_id]) # Needed to update format list and size + self.data.refresh_ids(self, [db_id]) # Needed to update format list and size return db_id - def add_news(self, path, arg): from calibre.ebooks.metadata.meta import get_metadata @@ -3375,7 +3397,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if not hasattr(path, 'read'): stream.close() self.conn.commit() - self.data.refresh_ids(self, [id]) # Needed to update format list and size + self.data.refresh_ids(self, [id]) # Needed to update format list and size return id def run_import_plugins(self, path_or_stream, format): @@ -3439,7 +3461,6 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): traceback.print_exc() return id - def add_books(self, paths, formats, metadata, add_duplicates=True, return_ids=False): ''' @@ -3483,7 +3504,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): stream.close() postimport.append((id, format)) self.conn.commit() - self.data.refresh_ids(self, ids) # Needed to update format list and size + self.data.refresh_ids(self, ids) # Needed to update format list and size for book_id, fmt in postimport: run_plugins_on_postimport(self, book_id, fmt) if duplicates: @@ -3533,7 +3554,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): # set_metadata, but probably isn't good enough self.dirtied([id], commit=False) self.conn.commit() - self.data.refresh_ids(self, [id]) # Needed to update format list and size + self.data.refresh_ids(self, [id]) # Needed to update format list and size if notify: self.notify('add', [id]) return id @@ -3627,7 +3648,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): FIELDS.add('%d_index'%x) data = [] for record in self.data: - if record is None: continue + if record is None: + continue db_id = record[self.FIELD_MAP['id']] if ids is not None and db_id not in ids: continue @@ -3670,8 +3692,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): progress.setValue(0) progress.setLabelText(header) QCoreApplication.processEvents() - db.conn.row_factory = lambda cursor, row : tuple(row) - db.conn.text_factory = lambda x : unicode(x, 'utf-8', 'replace') + db.conn.row_factory = lambda cursor, row: tuple(row) + db.conn.text_factory = lambda x: unicode(x, 'utf-8', 'replace') books = db.conn.get('SELECT id, title, sort, timestamp, series_index, author_sort, isbn FROM books ORDER BY id ASC') progress.setAutoReset(False) progress.setRange(0, len(books)) @@ -3747,7 +3769,7 @@ books_series_link feeds continue key = os.path.splitext(path)[0] - if not books.has_key(key): + if key not in books: books[key] = [] books[key].append(path) diff --git a/src/calibre/linux.py b/src/calibre/linux.py index 5f8ae31ce5..d2b0c941a6 100644 --- a/src/calibre/linux.py +++ b/src/calibre/linux.py @@ -33,7 +33,7 @@ entry_points = { 'fetch-ebook-metadata = calibre.ebooks.metadata.sources.cli:main', 'calibre-smtp = calibre.utils.smtp:main', ], - 'gui_scripts' : [ + 'gui_scripts' : [ __appname__+' = calibre.gui2.main:main', 'lrfviewer = calibre.gui2.lrf_renderer.main:main', 'ebook-viewer = calibre.gui2.viewer.main:main', @@ -347,7 +347,7 @@ class ZshCompleter(object): # {{{ subcommands.append(';;') f.write('\n_calibredb() {') - f.write( + f.write(( r''' local state line state_descr context typeset -A opt_args @@ -370,7 +370,7 @@ class ZshCompleter(object): # {{{ esac return ret - '''%'\n '.join(subcommands)) + '''%'\n '.join(subcommands)).encode('utf-8')) f.write('\n}\n\n') def write(self): diff --git a/src/calibre/translations/af.po b/src/calibre/translations/af.po index 2bf9285a04..a091bccb7f 100644 --- a/src/calibre/translations/af.po +++ b/src/calibre/translations/af.po @@ -7,27 +7,30 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" -"PO-Revision-Date: 2013-01-18 15:11+0000\n" -"Last-Translator: Gideon Wentink \n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" +"PO-Revision-Date: 2013-03-27 14:48+0000\n" +"Last-Translator: Albé Theunissen \n" "Language-Team: Afrikaans \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: 2013-03-16 04:34+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:07+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Doen absoluut niks" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Doen absoluut niks" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Doen absoluut niks" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Doen absoluut niks" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Doen absoluut niks" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Doen absoluut niks" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -204,14 +207,14 @@ msgstr "Basis" #: /home/kovid/work/calibre/src/calibre/ebooks/html/to_zip.py:81 #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:397 msgid "Customize" -msgstr "" +msgstr "Verstel" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:156 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:54 #: /home/kovid/work/calibre/src/calibre/gui2/actions/preferences.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/mtp_config.py:357 msgid "Cannot configure" -msgstr "" +msgstr "Kan nie instel nie" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:331 msgid "File type" @@ -373,7 +376,7 @@ msgstr "Dra boeke uit jou calibre biblioteek oor na die hardeskyf" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:830 msgid "Show book details in a separate popup" -msgstr "Took boekbesonderhede in ’n aparte opspringvenster" +msgstr "Wys boekbesonderhede in 'n aparte opspringvenster" #: /home/kovid/work/calibre/src/calibre/customize/builtins.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/actions/restart.py:14 @@ -954,8 +957,8 @@ msgstr "Aktiveer die genoemde inprop" msgid "Disable the named plugin" msgstr "Skakel die genoemde inprop af" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -965,7 +968,7 @@ msgstr "Skakel die genoemde inprop af" msgid "Path to library too long. Must be less than %d characters." msgstr "Pad na biblioteek te lank. Moet minder as %d karakters wees." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -980,25 +983,25 @@ msgstr "Ja" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Hoof" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Kaart A" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Kaart B" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1017,7 +1020,7 @@ msgstr "Kaart B" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Nuus" @@ -1268,8 +1271,8 @@ msgstr "" "Klik ‘Toon Detail’ vir ’n lys." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Katalogus" @@ -1950,7 +1953,7 @@ msgid "Communicate with the Ex124G" msgstr "Kommunikeer met die Ex124G" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2573,7 +2576,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2599,29 +2602,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2629,37 +2632,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2842,13 +2845,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2856,7 +2859,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4192,20 +4195,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4226,7 +4232,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4367,52 +4373,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4528,9 +4534,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4640,7 +4646,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4779,22 +4785,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5333,6 +5346,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5616,12 +5644,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5726,7 +5753,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6361,14 +6388,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7109,7 +7139,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7177,18 +7207,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7243,7 +7262,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7264,7 +7283,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7288,7 +7307,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7307,7 +7326,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7331,7 +7350,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7408,78 +7427,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7487,77 +7534,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7565,102 +7663,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8996,7 +9095,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9063,6 +9162,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9118,30 +9218,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9325,11 +9443,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9947,6 +10065,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9955,16 +10083,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10462,6 +10590,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10825,10 +10957,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11049,11 +11177,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11546,7 +11669,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12947,46 +13070,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13257,14 +13380,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13454,57 +13569,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13512,60 +13627,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13994,11 +14109,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14733,28 +14843,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15279,68 +15389,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17529,11 +17639,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17544,59 +17666,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17604,113 +17831,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17720,11 +17968,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17733,56 +17981,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19166,7 +19414,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19178,7 +19426,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19187,7 +19435,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19196,7 +19444,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19205,7 +19453,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19215,7 +19463,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19224,7 +19472,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19233,7 +19481,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19411,12 +19659,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19425,7 +19682,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19448,7 +19719,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19457,12 +19728,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19496,103 +19767,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19689,7 +19960,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19892,17 +20163,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19913,28 +20190,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19945,13 +20222,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19971,11 +20248,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19986,30 +20263,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -20021,17 +20298,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20040,20 +20317,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20063,15 +20347,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20084,40 +20368,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20131,13 +20415,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20145,34 +20429,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20187,18 +20471,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20206,33 +20490,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20269,17 +20553,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21552,194 +21836,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21815,7 +22103,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21823,117 +22111,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21978,60 +22266,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22039,7 +22327,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22047,10 +22335,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/ar.po b/src/calibre/translations/ar.po index f26229de92..07147ad0c1 100644 --- a/src/calibre/translations/ar.po +++ b/src/calibre/translations/ar.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.9.7\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2012-11-29 17:38+0000\n" "Last-Translator: Kovid Goyal \n" "Language-Team: awadh alghaamdi \n" @@ -17,8 +17,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= " "3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n" -"X-Launchpad-Export-Date: 2013-03-16 04:34+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:07+0000\n" +"X-Generator: Launchpad (build 16546)\n" "Language: ar\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -65,11 +65,14 @@ msgid "Does absolutely nothing" msgstr "يفعل شئ أى" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -92,8 +95,8 @@ msgstr "يفعل شئ أى" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -123,9 +126,9 @@ msgstr "يفعل شئ أى" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -156,7 +159,7 @@ msgstr "يفعل شئ أى" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -193,7 +196,7 @@ msgstr "يفعل شئ أى" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -220,19 +223,19 @@ msgstr "يفعل شئ أى" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -1013,8 +1016,8 @@ msgstr "تمكين الملحق المسمى" msgid "Disable the named plugin" msgstr "تعطيل الملحق المسمى" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -1024,7 +1027,7 @@ msgstr "تعطيل الملحق المسمى" msgid "Path to library too long. Must be less than %d characters." msgstr "الطريق إلى المكتبة وقتاً طويلاً. يجب أن يكون أقل %d من أحرف" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1039,25 +1042,25 @@ msgstr "نعم" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "الصفحة الرئيسية" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "بلكبيبي" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1076,7 +1079,7 @@ msgstr "بلكبيبي" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "الأخبار" @@ -1333,8 +1336,8 @@ msgstr "" "انقر على \"إظهار التفاصيل\" للقائمة." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "الفهرس" @@ -2024,7 +2027,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2671,7 +2674,7 @@ msgid "" "%s" msgstr "فشل في معالجة الصور: %s ." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2717,29 +2720,29 @@ msgstr "" "\n" "للحصول على الوثائق الكاملة لنظام التحويل انظر\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "خيارات الدخل" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "خيارات الخرج" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "خيارات للتحكم في معالجة الملف المدخل %s ." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "خيارات للتحكم في معالجة الملف المُخرج %s ." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "خيارات للتحكم في الشكل و المظهر للمُخرجات ." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2747,16 +2750,16 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "تحكّم بالكشف الآلي لبناء المستند" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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 " @@ -2765,21 +2768,21 @@ msgstr "" "السيطرة على الجيل التلقائي لجدول المحتويات. افتراضيا، إذا كان الملف المصدر " "يحتوي على جدول المحتويات، سيتم استخدامه في تفضيل واحدة ولدت تلقائياً." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "خيارات لوضع البيانات الوصفية في المُخرجات ." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "خيارات للمساعدة في تصحيح التحويل ." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "المخرجات حُفِظت في" @@ -2995,7 +2998,7 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "للحصول على قائمة كاملة مع الأوصاف." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -3003,7 +3006,7 @@ msgstr "" "اجتياز الارتباطات في اتساع ملفات إتش تي أم ال أولا. عادة، يتم اجتيازه أنهم " "عمق الأولى." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -3011,7 +3014,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4401,20 +4404,23 @@ msgstr "التعليقات" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4435,7 +4441,7 @@ msgstr "الوسوم" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4589,52 +4595,52 @@ msgstr "" msgid "Cover" msgstr "الغلاف" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "الولايات المتحدة" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "فرنسا" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "ألمانيا" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "بريطانيا" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "إيطاليا" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "الأمازون الموقع لﻻستخدام:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4752,9 +4758,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4864,7 +4870,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -5003,22 +5009,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5562,6 +5575,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5846,12 +5874,11 @@ msgstr "يمكن تحويله" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5956,7 +5983,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6599,14 +6626,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7347,7 +7377,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7415,18 +7445,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "العثور على التكرارات!" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7481,7 +7500,7 @@ msgid "Path" msgstr "المسار" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7502,7 +7521,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7526,7 +7545,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7545,7 +7564,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7569,7 +7588,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7646,78 +7665,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7725,77 +7772,128 @@ msgstr "" msgid "Name" msgstr "الاسم" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7803,102 +7901,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -9226,7 +9325,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9293,6 +9392,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9348,30 +9448,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "&عاطفية تضف فصول مكشوفة إلى قائمة المحتويات" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "&عدد الوصلات لإضافتها لقائمة المحتويات" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "&ألزم استخدام قائمة المحتويات المنشئة آلياً" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "&عاطفية تضف فصول مكشوفة إلى قائمة المحتويات" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "&عدد الوصلات لإضافتها لقائمة المحتويات" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "وتسمح وصلات مكررة عند إنشاء جدول المحتويات" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9555,11 +9673,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -10177,6 +10295,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -10185,16 +10313,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10692,6 +10820,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "العثور على التكرارات!" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -11055,10 +11187,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11279,11 +11407,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11779,7 +11902,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "المؤلفون" @@ -13184,46 +13307,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "تفاصيل الكتاب" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13494,14 +13617,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13691,57 +13806,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "مكتبة النظم" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "فشل في مكتبة إنشاء" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "تلف قاعدة البيانات" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13749,60 +13864,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -14235,11 +14350,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14983,28 +15093,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15537,68 +15647,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "صغير" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "كبير" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "متوسط" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "بواسطة الحرف الأول" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17788,11 +17898,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17803,59 +17925,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17863,113 +18090,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17979,11 +18227,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17992,56 +18240,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "احصل على الأخبار " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19397,7 +19645,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19409,7 +19657,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19418,7 +19666,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19427,7 +19675,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19436,7 +19684,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19446,7 +19694,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19455,7 +19703,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19464,7 +19712,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19642,12 +19890,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19656,7 +19913,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19679,7 +19950,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19688,12 +19959,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19727,103 +19998,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19922,7 +20193,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -20125,17 +20396,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -20146,28 +20423,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -20178,13 +20455,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -20204,11 +20481,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -20219,30 +20496,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -20254,17 +20531,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20273,20 +20550,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "إظهار التفاصيل لكل عمود." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20296,15 +20580,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20317,40 +20601,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20364,13 +20648,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20378,34 +20662,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "غير معروف تقرير الاختيار" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20420,18 +20704,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20439,33 +20723,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20502,17 +20786,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21801,194 +22085,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -22064,7 +22352,7 @@ msgid "Unknown feed" msgstr "تلقيم مجهول" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "مقالة دون عنوان" @@ -22072,117 +22360,117 @@ msgstr "مقالة دون عنوان" msgid "Unknown News Source" msgstr "مصدر الأخبار غير معروف" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "تم التنزيل" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "فشل الفولدر التالية المقالات:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "فشل الفولدر أجزاء من المقالات التالية:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr " من " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "محاولة الفولدر الغلاف..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "تم الفولدر التلقيم إلى %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "لم يتمكّن من الفولدر الغلاف: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "يتم الفولدر الغلاف من %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "مقالة دون عنوان" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "المقالة منزّلة: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "فشل الفولدر المقالة: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -22227,60 +22515,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22288,7 +22576,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22296,10 +22584,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/ast.po b/src/calibre/translations/ast.po index ede9980956..0bbc209345 100644 --- a/src/calibre/translations/ast.po +++ b/src/calibre/translations/ast.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2011-09-26 16:28+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:34+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:07+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Nun fai nada" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Nun fai nada" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Nun fai nada" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Nun fai nada" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Nun fai nada" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Nun fai nada" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -944,8 +947,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -955,7 +958,7 @@ msgstr "" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -970,25 +973,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1007,7 +1010,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1243,8 +1246,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "" @@ -1919,7 +1922,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2542,7 +2545,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2568,29 +2571,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2598,37 +2601,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2811,13 +2814,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2825,7 +2828,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4158,20 +4161,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4192,7 +4198,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4333,52 +4339,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4494,9 +4500,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4606,7 +4612,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4745,22 +4751,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5299,6 +5312,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5582,12 +5610,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5692,7 +5719,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6327,14 +6354,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7075,7 +7105,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7143,18 +7173,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7209,7 +7228,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7230,7 +7249,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7254,7 +7273,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7273,7 +7292,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7297,7 +7316,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7374,78 +7393,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7453,77 +7500,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7531,102 +7629,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8962,7 +9061,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9029,6 +9128,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9084,30 +9184,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9291,11 +9409,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9913,6 +10031,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9921,16 +10049,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10428,6 +10556,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10791,10 +10923,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11015,11 +11143,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11512,7 +11635,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12913,46 +13036,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13223,14 +13346,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13420,57 +13535,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13478,60 +13593,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13960,11 +14075,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14699,28 +14809,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15245,68 +15355,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17495,11 +17605,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17510,59 +17632,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17570,113 +17797,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17686,11 +17934,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17699,56 +17947,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19132,7 +19380,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19144,7 +19392,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19153,7 +19401,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19162,7 +19410,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19171,7 +19419,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19181,7 +19429,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19190,7 +19438,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19199,7 +19447,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19377,12 +19625,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19391,7 +19648,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19414,7 +19685,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19423,12 +19694,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19462,103 +19733,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19655,7 +19926,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19858,17 +20129,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19879,28 +20156,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19911,13 +20188,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19937,11 +20214,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19952,30 +20229,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -19987,17 +20264,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20006,20 +20283,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20029,15 +20313,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20050,40 +20334,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20097,13 +20381,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20111,34 +20395,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20153,18 +20437,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20172,33 +20456,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20235,17 +20519,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21518,194 +21802,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21781,7 +22069,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21789,117 +22077,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21944,60 +22232,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22005,7 +22293,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22013,10 +22301,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/az.po b/src/calibre/translations/az.po index 6b0ab20ffa..a575891e35 100644 --- a/src/calibre/translations/az.po +++ b/src/calibre/translations/az.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2012-08-07 14:00+0000\n" "Last-Translator: Emin Mastizada \n" "Language-Team: Azerbaijani \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:35+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:08+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Heç bir şey etmir" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Heç bir şey etmir" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Heç bir şey etmir" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Heç bir şey etmir" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Heç bir şey etmir" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Heç bir şey etmir" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -942,8 +945,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -953,7 +956,7 @@ msgstr "" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -968,25 +971,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1005,7 +1008,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1241,8 +1244,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "" @@ -1917,7 +1920,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2540,7 +2543,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2566,29 +2569,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2596,37 +2599,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2809,13 +2812,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2823,7 +2826,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4156,20 +4159,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4190,7 +4196,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4331,52 +4337,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4492,9 +4498,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4604,7 +4610,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4743,22 +4749,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5297,6 +5310,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5580,12 +5608,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5690,7 +5717,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6325,14 +6352,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7073,7 +7103,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7141,18 +7171,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7207,7 +7226,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7228,7 +7247,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7252,7 +7271,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7271,7 +7290,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7295,7 +7314,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7372,78 +7391,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7451,77 +7498,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7529,102 +7627,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8960,7 +9059,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9027,6 +9126,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9082,30 +9182,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9289,11 +9407,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9911,6 +10029,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9919,16 +10047,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10426,6 +10554,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10789,10 +10921,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11013,11 +11141,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11510,7 +11633,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12911,46 +13034,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13221,14 +13344,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13418,57 +13533,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13476,60 +13591,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13958,11 +14073,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14697,28 +14807,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15243,68 +15353,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17493,11 +17603,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17508,59 +17630,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17568,113 +17795,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17684,11 +17932,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17697,56 +17945,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19130,7 +19378,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19142,7 +19390,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19151,7 +19399,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19160,7 +19408,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19169,7 +19417,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19179,7 +19427,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19188,7 +19436,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19197,7 +19445,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19375,12 +19623,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19389,7 +19646,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19412,7 +19683,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19421,12 +19692,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19460,103 +19731,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19653,7 +19924,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19856,17 +20127,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19877,28 +20154,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19909,13 +20186,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19935,11 +20212,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19950,30 +20227,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -19985,17 +20262,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20004,20 +20281,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20027,15 +20311,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20048,40 +20332,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20095,13 +20379,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20109,34 +20393,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20151,18 +20435,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20170,33 +20454,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20233,17 +20517,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21516,194 +21800,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21779,7 +22067,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21787,117 +22075,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21942,60 +22230,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22003,7 +22291,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22011,10 +22299,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/ber.po b/src/calibre/translations/ber.po index 82faecea01..915b520168 100644 --- a/src/calibre/translations/ber.po +++ b/src/calibre/translations/ber.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2012-10-14 04:57+0000\n" "Last-Translator: Walid AMMOU \n" "Language-Team: Berber (Other) \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:35+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:08+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -938,8 +941,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -949,7 +952,7 @@ msgstr "" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -964,25 +967,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1001,7 +1004,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "ⵉⵏⵖⵎⵉⵙⵏ" @@ -1237,8 +1240,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "" @@ -1913,7 +1916,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2536,7 +2539,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2562,29 +2565,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2592,37 +2595,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2805,13 +2808,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2819,7 +2822,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4152,20 +4155,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4186,7 +4192,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4327,52 +4333,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4488,9 +4494,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4600,7 +4606,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4739,22 +4745,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5293,6 +5306,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5576,12 +5604,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5686,7 +5713,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6321,14 +6348,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7069,7 +7099,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7137,18 +7167,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7203,7 +7222,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7224,7 +7243,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7248,7 +7267,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7267,7 +7286,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7291,7 +7310,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7368,78 +7387,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "ⵖⵔ ⴰⵙⵍⵉⴷ" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7447,77 +7494,128 @@ msgstr "" msgid "Name" msgstr "ⵉⵙⵎ" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "ⵙⵙⵏⵊⵎ" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "&ⴰⵣⵡⵍ" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "&ⵉⵏⴰⵡⵏ" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7525,102 +7623,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "&ⴷⴰⵜ" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "&ⴷⴼⴼⵉⵔ" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8956,7 +9055,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9023,6 +9122,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9078,30 +9178,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9285,11 +9403,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9907,6 +10025,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9915,16 +10043,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10422,6 +10550,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10785,10 +10917,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11009,11 +11137,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11506,7 +11629,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12907,46 +13030,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13217,14 +13340,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13414,57 +13529,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13472,60 +13587,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13954,11 +14069,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14693,28 +14803,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15239,68 +15349,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "ⵜⴰⵎⴰⵎⴽⵜ ⵏ ⴽⴰⵍⵉⴱⵔ" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "ⴰⵎⵉⵔⵉⵡ" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "ⴰⵎⵊⴰⵀⴷⵉ" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "ⴰⴱⴷⴰ" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "ⵊⵊⵓⵏ" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17489,11 +17599,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17504,59 +17626,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17564,113 +17791,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17680,11 +17928,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17693,56 +17941,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19126,7 +19374,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19138,7 +19386,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19147,7 +19395,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19156,7 +19404,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19165,7 +19413,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19175,7 +19423,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19184,7 +19432,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19193,7 +19441,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19371,12 +19619,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19385,7 +19642,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19408,7 +19679,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19417,12 +19688,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19456,103 +19727,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19649,7 +19920,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19852,17 +20123,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19873,28 +20150,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19905,13 +20182,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19931,11 +20208,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19946,30 +20223,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -19981,17 +20258,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20000,20 +20277,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20023,15 +20307,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20044,40 +20328,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20091,13 +20375,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20105,34 +20389,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20147,18 +20431,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20166,33 +20450,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20229,17 +20513,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21512,194 +21796,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21775,7 +22063,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21783,117 +22071,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21938,60 +22226,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -21999,7 +22287,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22007,10 +22295,6 @@ msgstr "" msgid "OK" msgstr "ⵓⴽⴽⵉ" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "ⵙⵙⵏⵊⵎ" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "ⴰⵏⴼ" diff --git a/src/calibre/translations/bg.po b/src/calibre/translations/bg.po index 6abdf04aa2..79f7dab0d7 100644 --- a/src/calibre/translations/bg.po +++ b/src/calibre/translations/bg.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.4.51\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2013-03-17 14:12+0000\n" "Last-Translator: S_S \n" "Language-Team: bg\n" @@ -14,8 +14,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: 2013-03-18 04:45+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:09+0000\n" +"X-Generator: Launchpad (build 16546)\n" "Generated-By: pygettext.py 1.5\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 @@ -23,11 +23,14 @@ msgid "Does absolutely nothing" msgstr "Не прави абсолютно нищо" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Не прави абсолютно нищо" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Не прави абсолютно нищо" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Не прави абсолютно нищо" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Не прави абсолютно нищо" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Не прави абсолютно нищо" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -1003,8 +1006,8 @@ msgstr "Активиране на избраната добавка" msgid "Disable the named plugin" msgstr "Деактивиране на избраната добавка" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -1016,7 +1019,7 @@ msgstr "" "Пътят към библиотеката е прекалено дълъг. Трябва да съдържа по-малко от %d " "символа." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1031,25 +1034,25 @@ msgstr "Да" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Карта Б" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1068,7 +1071,7 @@ msgstr "Карта Б" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Новини" @@ -1337,8 +1340,8 @@ msgstr "" "Натиснете \"Show Details\", за да видите списъка." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Каталог" @@ -2037,7 +2040,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2673,7 +2676,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2699,29 +2702,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "ВХОДЯЩИ ОПЦИИ" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "ИЗХОДЯЩИ ОПЦИИ" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2729,37 +2732,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2944,13 +2947,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2958,7 +2961,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4294,20 +4297,23 @@ msgstr "Коментари" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4328,7 +4334,7 @@ msgstr "Етикети" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4469,52 +4475,52 @@ msgstr "" msgid "Cover" msgstr "Корица" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4630,9 +4636,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4742,7 +4748,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4881,22 +4887,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5435,6 +5448,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "Достъпът е отказан" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5718,12 +5746,11 @@ msgstr "Не може да се конвертира" msgid "Starting conversion of %d book(s)" msgstr "Започване на конвертиране на %d книга(и)" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5828,7 +5855,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6463,14 +6490,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7211,7 +7241,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7279,18 +7309,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7345,7 +7364,7 @@ msgid "Path" msgstr "Път" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7366,7 +7385,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7390,7 +7409,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7409,7 +7428,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7433,7 +7452,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7510,78 +7529,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "CSV/XML опции" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7589,77 +7636,128 @@ msgstr "" msgid "Name" msgstr "Име" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7667,102 +7765,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -9098,7 +9197,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "Конвертиране" @@ -9165,6 +9264,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "Неправилен XPath" @@ -9220,30 +9320,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9427,11 +9545,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -10049,6 +10167,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -10057,16 +10185,16 @@ msgstr "" msgid "My Books" msgstr "Моите книги" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10564,6 +10692,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10927,10 +11059,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11151,11 +11279,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11648,7 +11771,7 @@ msgstr "Прекъсване..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Автори" @@ -13049,46 +13172,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13359,14 +13482,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "Достъпът е отказан" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13556,57 +13671,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13614,60 +13729,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "опитайте да изтриете файла" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "%s вече се изпълнява." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -14096,11 +14211,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14835,28 +14945,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15381,68 +15491,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "Малък" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "Голям" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "Среден" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17633,11 +17743,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17648,59 +17770,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17708,113 +17935,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17824,11 +18072,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17837,56 +18085,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19270,7 +19518,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19282,7 +19530,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19291,7 +19539,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19300,7 +19548,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19309,7 +19557,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19319,7 +19567,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19328,7 +19576,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19337,7 +19585,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19515,12 +19763,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19529,7 +19786,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19552,7 +19823,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19561,12 +19832,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19600,103 +19871,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19793,7 +20064,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19996,17 +20267,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -20017,28 +20294,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -20049,13 +20326,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -20075,11 +20352,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -20090,30 +20367,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -20125,17 +20402,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20144,20 +20421,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20167,15 +20451,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20188,40 +20472,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20235,13 +20519,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20249,34 +20533,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20291,18 +20575,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20310,33 +20594,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20373,17 +20657,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21656,194 +21940,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21919,7 +22207,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21927,117 +22215,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -22082,60 +22370,60 @@ msgstr "" msgid "Articles" msgstr "Статии" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22143,7 +22431,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22151,10 +22439,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/bn.po b/src/calibre/translations/bn.po index aaa1d459f3..1c60b4da12 100644 --- a/src/calibre/translations/bn.po +++ b/src/calibre/translations/bn.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2012-04-12 14:19+0000\n" "Last-Translator: Shahnoor Ashraf \n" "Language-Team: Bengali \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:35+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:08+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "আসলে কিছুই করে না" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "আসলে কিছুই করে না" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "আসলে কিছুই করে না" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "আসলে কিছুই করে না" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "আসলে কিছুই করে না" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "আসলে কিছুই করে না" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -938,8 +941,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -949,7 +952,7 @@ msgstr "" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -964,25 +967,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1001,7 +1004,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1237,8 +1240,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "" @@ -1913,7 +1916,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2536,7 +2539,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2562,29 +2565,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2592,37 +2595,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2805,13 +2808,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2819,7 +2822,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4152,20 +4155,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4186,7 +4192,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4327,52 +4333,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4488,9 +4494,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4600,7 +4606,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4739,22 +4745,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5293,6 +5306,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5576,12 +5604,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5686,7 +5713,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6321,14 +6348,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7069,7 +7099,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7137,18 +7167,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7203,7 +7222,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7224,7 +7243,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7248,7 +7267,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7267,7 +7286,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7291,7 +7310,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7368,78 +7387,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7447,77 +7494,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7525,102 +7623,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8956,7 +9055,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9023,6 +9122,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9078,30 +9178,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9285,11 +9403,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9907,6 +10025,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9915,16 +10043,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10422,6 +10550,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10785,10 +10917,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11009,11 +11137,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11506,7 +11629,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12907,46 +13030,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13217,14 +13340,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13414,57 +13529,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13472,60 +13587,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13954,11 +14069,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14693,28 +14803,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15239,68 +15349,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17489,11 +17599,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17504,59 +17626,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17564,113 +17791,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17680,11 +17928,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17693,56 +17941,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19126,7 +19374,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19138,7 +19386,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19147,7 +19395,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19156,7 +19404,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19165,7 +19413,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19175,7 +19423,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19184,7 +19432,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19193,7 +19441,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19371,12 +19619,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19385,7 +19642,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19408,7 +19679,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19417,12 +19688,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19456,103 +19727,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19649,7 +19920,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19852,17 +20123,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19873,28 +20150,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19905,13 +20182,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19931,11 +20208,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19946,30 +20223,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -19981,17 +20258,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20000,20 +20277,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20023,15 +20307,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20044,40 +20328,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20091,13 +20375,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20105,34 +20389,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20147,18 +20431,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20166,33 +20450,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20229,17 +20513,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21512,194 +21796,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21775,7 +22063,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21783,117 +22071,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21938,60 +22226,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -21999,7 +22287,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22007,10 +22295,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/br.po b/src/calibre/translations/br.po index ae29a49f88..a3a12c004e 100644 --- a/src/calibre/translations/br.po +++ b/src/calibre/translations/br.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2011-08-13 04:22+0000\n" "Last-Translator: Denis \n" "Language-Team: Breton \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:36+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:09+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Ne ra netra da vat" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Ne ra netra da vat" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Ne ra netra da vat" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Ne ra netra da vat" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Ne ra netra da vat" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Ne ra netra da vat" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -941,8 +944,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -952,7 +955,7 @@ msgstr "" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -967,25 +970,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1004,7 +1007,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Keleier" @@ -1240,8 +1243,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Katalog" @@ -1916,7 +1919,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2539,7 +2542,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2565,29 +2568,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2595,37 +2598,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2808,13 +2811,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2822,7 +2825,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4158,20 +4161,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4192,7 +4198,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4333,52 +4339,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4494,9 +4500,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4606,7 +4612,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4745,22 +4751,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5299,6 +5312,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5582,12 +5610,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5692,7 +5719,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6327,14 +6354,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7075,7 +7105,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7143,18 +7173,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7209,7 +7228,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7230,7 +7249,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7254,7 +7273,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7273,7 +7292,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7297,7 +7316,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7374,78 +7393,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7453,77 +7500,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7531,102 +7629,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8962,7 +9061,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9029,6 +9128,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9084,30 +9184,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9291,11 +9409,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9913,6 +10031,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9921,16 +10049,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10428,6 +10556,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10791,10 +10923,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11015,11 +11143,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11512,7 +11635,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12913,46 +13036,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13223,14 +13346,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13420,57 +13535,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13478,60 +13593,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13960,11 +14075,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14699,28 +14809,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15245,68 +15355,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17495,11 +17605,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17510,59 +17632,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17570,113 +17797,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17686,11 +17934,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17699,56 +17947,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19132,7 +19380,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19144,7 +19392,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19153,7 +19401,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19162,7 +19410,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19171,7 +19419,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19181,7 +19429,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19190,7 +19438,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19199,7 +19447,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19377,12 +19625,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19391,7 +19648,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19414,7 +19685,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19423,12 +19694,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19462,103 +19733,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19655,7 +19926,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19858,17 +20129,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19879,28 +20156,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19911,13 +20188,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19937,11 +20214,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19952,30 +20229,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -19987,17 +20264,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20006,20 +20283,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20029,15 +20313,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20050,40 +20334,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20097,13 +20381,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20111,34 +20395,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20153,18 +20437,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20172,33 +20456,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20235,17 +20519,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21518,194 +21802,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21781,7 +22069,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21789,117 +22077,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21944,60 +22232,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22005,7 +22293,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22013,10 +22301,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/bs.po b/src/calibre/translations/bs.po index 378862310c..c997bd40a5 100644 --- a/src/calibre/translations/bs.po +++ b/src/calibre/translations/bs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2012-01-02 13:31+0000\n" "Last-Translator: Kenan Dervišević \n" "Language-Team: Bosnian \n" @@ -16,19 +16,22 @@ 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: 2013-03-16 04:36+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:09+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Ne radi apsolutno ništa" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -51,8 +54,8 @@ msgstr "Ne radi apsolutno ništa" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -82,9 +85,9 @@ msgstr "Ne radi apsolutno ništa" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -115,7 +118,7 @@ msgstr "Ne radi apsolutno ništa" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -152,7 +155,7 @@ msgstr "Ne radi apsolutno ništa" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -179,19 +182,19 @@ msgstr "Ne radi apsolutno ništa" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -944,8 +947,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -955,7 +958,7 @@ msgstr "" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -970,25 +973,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1007,7 +1010,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Vijesti" @@ -1243,8 +1246,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Katalog" @@ -1919,7 +1922,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2542,7 +2545,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2568,29 +2571,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2598,37 +2601,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2811,13 +2814,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2825,7 +2828,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4158,20 +4161,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4192,7 +4198,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4333,52 +4339,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4494,9 +4500,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4606,7 +4612,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4745,22 +4751,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5300,6 +5313,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5583,12 +5611,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5693,7 +5720,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6328,14 +6355,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7076,7 +7106,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7144,18 +7174,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7210,7 +7229,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7231,7 +7250,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7255,7 +7274,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7274,7 +7293,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7298,7 +7317,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7375,78 +7394,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7454,77 +7501,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7532,102 +7630,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8963,7 +9062,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9030,6 +9129,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9085,30 +9185,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9292,11 +9410,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9914,6 +10032,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9922,16 +10050,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10429,6 +10557,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10792,10 +10924,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11016,11 +11144,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11513,7 +11636,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Autori" @@ -12914,46 +13037,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13224,14 +13347,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13421,57 +13536,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13479,60 +13594,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13961,11 +14076,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14700,28 +14810,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15246,68 +15356,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17500,11 +17610,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17515,59 +17637,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17575,113 +17802,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17691,11 +17939,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17704,56 +17952,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "Nije moguće pretvoriti neke knjige" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "Dobavi vijesti sa " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19137,7 +19385,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19149,7 +19397,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19158,7 +19406,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19167,7 +19415,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19176,7 +19424,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19186,7 +19434,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19195,7 +19443,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19204,7 +19452,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19382,12 +19630,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19396,7 +19653,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19419,7 +19690,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19428,12 +19699,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19467,103 +19738,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "Nema dostupnih knjiga koje bi se mogle dodati u katalog" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19660,7 +19931,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19863,17 +20134,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19884,28 +20161,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19916,13 +20193,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19942,11 +20219,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19957,30 +20234,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -19992,17 +20269,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20011,20 +20288,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20034,15 +20318,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20055,40 +20339,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20102,13 +20386,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20116,34 +20400,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20158,18 +20442,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20177,33 +20461,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20240,17 +20524,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21523,194 +21807,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21786,7 +22074,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21794,117 +22082,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21949,60 +22237,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22010,7 +22298,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22018,10 +22306,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/ca.po b/src/calibre/translations/ca.po index 86f9d70309..d2b69223f8 100644 --- a/src/calibre/translations/ca.po +++ b/src/calibre/translations/ca.po @@ -10,27 +10,30 @@ msgid "" msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" -"PO-Revision-Date: 2013-03-16 15:53+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" +"PO-Revision-Date: 2013-03-30 10:00+0000\n" "Last-Translator: Ferran Rius \n" "Language-Team: \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: 2013-03-17 04:57+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-31 05:16+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "No fa res" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -53,8 +56,8 @@ msgstr "No fa res" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -84,9 +87,9 @@ msgstr "No fa res" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -117,7 +120,7 @@ msgstr "No fa res" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -154,7 +157,7 @@ msgstr "No fa res" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -181,19 +184,19 @@ msgstr "No fa res" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -1010,8 +1013,8 @@ msgstr "Habilita el connector especificat" msgid "Disable the named plugin" msgstr "Inhabilita el connector especificat" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -1022,7 +1025,7 @@ msgid "Path to library too long. Must be less than %d characters." msgstr "" "El camí a la biblioteca és massa llarg. Ha de ser de menys de %d caràcters." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1037,25 +1040,25 @@ msgstr "Sí" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)sLa valoració mitjana és %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Inici" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Targeta A" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Targeta B" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1074,7 +1077,7 @@ msgstr "Targeta B" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Notícies" @@ -1359,8 +1362,8 @@ msgstr "" "Feu clic a «Mostra detalls» per a la llista." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Catàleg" @@ -2127,8 +2130,8 @@ msgid "Communicate with the Ex124G" msgstr "Comunica't amb l'Ex124G" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" -msgstr "Comunica't amb un lector WayteQ" +msgid "Communicate with the WayteQ and SPC Dickens Readers" +msgstr "Comunica't amb les lectors WayteQ i SPC Dickens" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 msgid "MTP Device" @@ -2839,7 +2842,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2888,29 +2891,29 @@ msgstr "" "\n" "Si voleu tota la documentació del sistema de conversió vegeu\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "OPCIONS D'ENTRADA" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "OPCIONS DE SORTIDA" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "Opcions per controlar el processament del fitxer d'entrada %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "Opcions per a controlar el processament de la sortida %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "Opcions per controlar l'aparença de la sortida" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2921,18 +2924,18 @@ msgstr "" "Inhabilitat per defecte. Utilitzeu %(en)s per habilitar-ho. Es pot " "inhabilitar les accions individuals amb les opcions %(dis)s." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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 "" "Modifica el text i l'estructura del documenta amb els patrons definits per " "l'usuari." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "Controla l'autodetecció de l'estructura del document." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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 " @@ -2941,15 +2944,15 @@ msgstr "" "Controla la generació automàtica de l'índex. Si el fitxer d'origen conté un " "índex, s'utilitzarà preferentment aquest en lloc del generat automàticament." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "Opcions per assignar metadades a la sortida" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "Opcions per ajudar a la depuració de la conversió" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" @@ -2957,7 +2960,7 @@ msgstr "" "Llista els noms de les receptes integrades. Podeu crear un llibre a partir " "d'una recepta integrada així: «Nom de la recepta.recipe» sortida.epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "S'ha desat la sortida a" @@ -3203,7 +3206,7 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "per a una llist complerta amb descripcions." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -3211,7 +3214,7 @@ msgstr "" "Recorre els enllaços dels fitxers HTML primer per amplitud. Normalment es " "recorren primer per profunditat." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -3222,7 +3225,7 @@ msgstr "" "No han de ser negatius. 0 significa que no es segueixen enllaços al fitxer " "HTML arrel. Per defecte %default." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4938,20 +4941,23 @@ msgstr "Comentaris" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4972,7 +4978,7 @@ msgstr "Etiquetes" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -5139,53 +5145,53 @@ msgstr "" msgid "Cover" msgstr "Portada" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "Baixa les metadades i les portades des d'Amazon" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "Estats Units" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "França" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "Alemanya" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "Regne Unit" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "Itàlia" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "Japó" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "Espanya" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "Brasil" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "Portal de Amazon que s'utilitzarà:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "" "S'obtindrà les metadades d'Amazon del lloc web d'Amazon d'aquest país." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "El temps d'espera d'Amazon s'ha esgotat. Intenteu-ho més tard." @@ -5326,9 +5332,9 @@ msgstr "No es disposa de detalls" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -5459,7 +5465,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -5629,22 +5635,29 @@ msgstr "Heu d'especificar almenys una acció a realitzar" msgid "Smartened punctuation in: %s" msgstr "Puntuació embellida a: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "No hi ha cap fitxer anomenat %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "No hi ha cap fitxer HTML anomenat %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "No hi ha cap àncora %(a)s al fitxer %(f)s" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "(Sense títol)" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -6221,6 +6234,21 @@ msgstr "Carpeta d'exportació del catàleg" msgid "Select destination for %(title)s.%(fmt)s" msgstr "Seleccioneu la destinació de %(title)s.%(fmt)s" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "S'ha denegat el permís" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "No s'ha pogut obrir %s. L'està fent servir un altre programa?" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -6530,13 +6558,12 @@ msgstr "No es pot convertir" msgid "Starting conversion of %d book(s)" msgstr "S'està començant la conversió de %d llibre(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" "Fitxer de sortida buit, probablement el procés de conversió ha fallat" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "%(title)s per %(author)s" @@ -6647,7 +6674,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -7351,14 +7378,17 @@ msgid "You must select at least one action before saving" msgstr "Heu de seleccionar almenys una acció abans de desar" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "Tria de nom" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "Trieu un nom per a aquesta configuració" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "Suprimeix els paràmetres desats" @@ -8170,7 +8200,7 @@ msgstr "" "los a la biblioteca del calibre" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -8242,20 +8272,7 @@ msgstr "" "&Múltiples llibres per carpeta. S'assumeix que tots els fitxers de llibre " "electrònic són llibres diferents" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "S'ha trobat duplicats!" - -#: /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?" -msgstr "" -"Ja hi ha llibres amb el mateix títol a la base de dades. S'afegeixen " -"igualment?" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "S'ha afegit %(num)d llibre(s) automàticament des de %(src)s" @@ -8310,7 +8327,7 @@ msgid "Path" msgstr "Camí" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "Mida de la portada: %(width)d×%(height)d" @@ -8331,7 +8348,7 @@ msgstr "Opcions de BibTeX" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -8355,7 +8372,7 @@ msgstr "Opcions específiques per" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -8374,7 +8391,7 @@ msgstr "sortida" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -8398,7 +8415,7 @@ msgstr "sortida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -8482,78 +8499,107 @@ msgstr "" msgid "CSV/XML Options" msgstr "Opcions de CSV/XML" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "Opcions dels llibres" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "Catàlegs" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "Llibre llegit" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "Element desitjat" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "qualsevol data" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "qualsevol valor" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "sense especificar" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "No s'exclourà cap gènere" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "error de regex: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "S'exclourà tots els gèneres" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "Suprimeix el catàleg predefinit desat" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "Es suprimirà el catàleg predefinit desat seleccionat. N'esteu segur?" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "Desa el catàleg predefinit" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "Nom del predefinit:" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "Heu de proporcionar un nom." + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" +"Aquest nom de predefinit ja existeix i es sobreescriurà. N'esteu segur?" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "Segur que voleu suprimir «%s»?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "Segur que voleu suprimir les regles #%(first)d-%(last)d?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "Suprimeix la regla" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "Fals" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "Cert" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -8561,57 +8607,111 @@ msgstr "Cert" msgid "Name" msgstr "Nom" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "Camp" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "Valor" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "Prefix" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "Predefinits" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "Selecció del predefinit a carregar" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "Desa la configuració del catàleg actual com a predefinit" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "Desa" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "Suprimeix el predefinit actual" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "Suprimeix" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "Les seccions habilitades s'inclouran al catàleg generat." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "Seccions incloses" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "Llista dels llibres ordenats per autor" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "&Autors" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "Llista dels llibres ordenats per títol" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "&Títols" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "Llista dels llibres de sèrie ordenats per sèrie" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "&Sèries" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "Llista dels llibres ordenats per gènere" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "&Gèneres" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" -msgstr "Camp que conté la informació del gènere" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" +msgstr "Camp que conté els gèneres" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" +"Llista dels llibres ordenats per la data que es van afegir al calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "Afegits &recentment" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" +"Descripcions individuals dels llibres amb miniatures de portada ordenats per " +"autor" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "&Descripcions" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." @@ -8619,11 +8719,11 @@ msgstr "" "La primera regla de prefix aplica un prefix a les llistes de llibres al " "catàleg generat." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "Prefixs" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " @@ -8631,11 +8731,11 @@ msgstr "" "Els llibre que compleixin alguna de les regles d'exclusió no sortiran al " "catàleg generat. " -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "Llibres exclosos" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -8648,111 +8748,115 @@ msgstr "" "«[etiqueta]», per exemple «[Llibre de proba]» i «+», que és l'etiqueta per " "defecte per a un llibre llegit." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "Gèneres exclosos" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "Gèneres que s'&exclouran (regex):" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "Restaura als valors per defecte" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "Resultats de regex:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "Etiquetes que s'exclouran com a gèneres" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "Altres opcions" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -"Columna personalitzada amb contingut addicional que es fusionarà amb les " -"metadades de «Comentaris»." +"Columna personalitzada amb contingut addicional que es fusionarà amb els " +"comentaris de les metadades a la secció «Descripcions»." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -"Fusiona el contingut addicional abans de les metadades de «Comentaris»." +"Fusiona el contingut addicional abans dels comentaris de la secció " +"«Descripcions»." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "A&bans" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -"Fusiona el contingut addicional després de les metadades de «Comentaris»." +"Fusiona el contingut addicional després dels comentaris de la secció " +"«Descripcions»." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "&Després" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -"Separa les metadades de «Comentaris» i el contingut addicional amb una línia " -"horitzontal." +"Separa els comentaris de les metadades i el contingut addicional amb una " +"barra horitzontal a la secció «Descripcions»." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "Inclou un &separador" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "&Fusiona amb els comentaris:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "Portada del catàleg" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "Genera una nova portada" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "Utilitza la portada actual" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "Nota de descripció a&ddicional:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -"Columna personalitzada origen del text a incloure a la secció «Descripció»." +"Columna personalitzada origen del text que s'inclourà a la secció " +"«Descripcions»." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "Amplada de la minia&tura" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" "Mesures suggerides per a les miniatures de portada incloses a la secció " "«Descripció»." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr " polsada" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "Referències creuades dels autors:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "Mostra cada autor per separat en llibres amb múltiples autors" @@ -10175,7 +10279,7 @@ msgstr "" "amb una expressió feu clic al botó «Afegeix» per afegir-la a la llista " "d'expressions." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "Conversió" @@ -10247,6 +10351,7 @@ msgstr "Comença a llegir a (espressió XPath):" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "XPath invàlid" @@ -10307,30 +10412,53 @@ msgstr "Nivell &2 de l'índex (expressió xPath):" msgid "Level &3 TOC (XPath expression):" msgstr "Nivell &3 de l'índex (expressió xPath):" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "No afegeixis els capítols que es &detectin a l'índex" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "Nombre d'enl&laços que s'ha d'afegir a l'índex" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "Ll&indar de capítols" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "&Força l'ús de l'índex que es generi automàticament" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "No afegeixis els capítols que es &detectin a l'índex" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "Nombre d'enl&laços que s'ha d'afegir a l'índex" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "Filtre de l'índe&x:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "Ll&indar de capítols" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "Permet enllaços duplicats en crear l'índex" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" +"Ajuda quant a l'ús d'aquestes opcions per a generar un índex" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" +"Aquesta opció farà que es mostri l'emergent de l'eina d'edició de l'índex,\n" +" que us permetrà editar manualment l'índex per corregir qualsevol error\n" +" causat per la generació automàtica." + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "Afina &manualment l'índex abans de completar la conversió" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "Entrada TXT" @@ -10525,11 +10653,11 @@ msgstr "" "etiqueta.

Per aprendre més usos avançats d'XPath vegeu l'Assistent d'XPath." -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "Navegació per portades" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "No s'ha pogut carregar el navegador de portades" @@ -11197,6 +11325,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "E&tiquetes que s'aplicaran a les entrades dels llibres creats:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "Següent [%s]" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "Anterior [%s]" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "&Ajusta la portada al que és visible" @@ -11205,16 +11343,16 @@ msgstr "&Ajusta la portada al que és visible" msgid "My Books" msgstr "Els meus llibres" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "No hi ha ajuda disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "No hi ha ajuda disponible per a aquest format de sortida" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "Genera el catàleg" @@ -11839,6 +11977,10 @@ msgstr "" " disponibles a Open " "Books." +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "S'ha trobat duplicats!" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -12239,10 +12381,6 @@ msgstr "Desa el cerca/reemplaça" msgid "Search/replace name:" msgstr "Nom del cerca/reemplaça:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "Heu de proporcionar un nom." - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -12494,11 +12632,6 @@ msgstr "Desa el cerca/reemplaça actual" msgid "Sa&ve" msgstr "&Desa" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "Suprimeix" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "Cerca al &camp:" @@ -13033,7 +13166,7 @@ msgstr "S'està interrompent..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Autors" @@ -14580,46 +14713,46 @@ msgstr "Tria el &tipus de lletra" msgid "Clear the font family" msgstr "Elimina el tipus de lletra" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "el navegador de portades" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "Maj+Alt+B" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "l'explorador d'etiquetes" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "Maj+Alt+T" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "versió" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "ha estat creat per Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " msgstr "Connectat " -#: /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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "Detalls del llibre" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "Maj+Alt+D" @@ -14894,14 +15027,6 @@ msgstr "El nom de la cerca és «{0}»" msgid "This book's UUID is \"{0}\"" msgstr "L'UUID del llibre és «{0}»" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "S'ha denegat el permís" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -15101,63 +15226,63 @@ msgstr "" "El camí al calibre portàtil (%s) és massa llarg. Ha de ser de menys de 59 " "caràcters." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "Biblioteca del calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" "Trieu una localització per a la vostra biblioteca de llibres del calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "No s'ha pogut crear la biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "No s'ha pogut crear la biblioteca a: %r." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" "Trieu una localització per a la vostra nova biblioteca de llibres del calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "S'està iniciant la interfície d'usuari..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "Ha fallat la reparació" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" "La reparació de la base de dades ha fallat. S'està començant amb una nova " "biblioteca buida." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "Localització de la base de dades incorrecta" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" "Localització de la base de dades incorrecta %r. El calibre es tancarà tot " "seguit." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "Base de dades malmesa" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15169,7 +15294,7 @@ msgstr "" "reconstruir totalment. Si escolliu «No» es crearà una biblioteca nova del " "calibre buida." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" @@ -15177,54 +15302,54 @@ msgstr "" "Localització de la base de dades incorrecta %r. Es començarà amb una nova " "biblioteca del calibre buida" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "S'està iniciant el %s: s'està carregant els llibres..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "Si esteu segur que no s'està executant" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "pot ser que s'estigui executant a la safata del sistema, a la" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "zona superior dreta de la pantalla." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "zona inferior dreta de la pantalla" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "intenteu reiniciar l'ordinador." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "intenteu suprimir el fitxer" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "No es pot iniciar " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "%s ja s'està executant." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "No s'ha trobat cap calibre en execució" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "S'ha enviat l'ordre de tancament, s'està esperant el tancament..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "No s'ha pogut tancar la instància del calibre en execució" @@ -15694,11 +15819,6 @@ msgstr "Canvia com el calibre baixa les metadades" msgid " [%(num)d of %(tot)d]" msgstr " [%(num)d de %(tot)d]" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "No s'ha pogut obrir %s. L'està fent servir un altre programa?" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -16554,28 +16674,28 @@ msgstr "" "«Afegeix regla» de sota per començar.

Podeu canviar una regla " "existent fent-hi doble clic." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "No s'ha seleccionat cap regla" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "No s'ha seleccionat cap regla per a %s." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "supressió" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "Heu de seleccionar una columna per suprimir-la" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "La columna seleccionada no és una columna personalitzada" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -17192,68 +17312,68 @@ msgstr "" "per habilitar el connector, el calibre no detecta el dispositius gestionats " "per connectors inhabilitats." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "Estreta" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "Ampla" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "Estil de Calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "Valor per defecte del sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "Desactivat" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "Petita" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "Gran" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "Mitjana" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "Sempre" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "Si hi ha prou espai" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "Mai" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "Per inicial" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "Inhabilitat" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "Repartit" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "Pintat de columna" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "Icones de columna" @@ -19802,11 +19922,23 @@ msgstr "Partició" msgid "First letter is usable only when sorting by name" msgstr "Només es pot utilitzar la primera lletra quan s'ordena per nom" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "Seleccioneu una destinació per a l'entrada de l'índex" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "Cerca text..." + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "Troba el &següent" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "Cerca l'&anterior" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -19824,42 +19956,103 @@ msgstr "" "apareix una línia verda gruixuda, indicant la ubicació exacta que es " "seleccionarà en fer clic." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "&Nom de l'entrada de l'índex" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "Destinació seleccionada actualment:" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "No s'ha trobat cap coincidència" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "No s'ha trobat cap coincidència per a: %s" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" +"No s'ha trobat coincidències per a %(text)s al fitxer actual [%(current)s]. " +"Voleu cercar al fitxer %(which)s [%(next)s]?" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "següent" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "anterior" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "Fitxer:" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "Començament del fitxer" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "(Sense títol)" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "Aproximadament %d%% des del principi" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "Ubicació: Una etiqueta <%s> a dins del fitxer" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "Crea l'índex des d'XPath" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" +"Especifiqueu una sèrie d'expressions XPath per als diferents nivells de " +"l'índex. Podeu utilitzar els botons de l'assistent per ajudar-vos a crear " +"les expressions XPath." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "Nivell %s de l'índex:" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "De&sa la configuració" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "Carrega &la configuració" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "Cap expressió XPath" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "No s'ha introduït cap expressió XPath" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "L'expressió XPath %s no és vàlida." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." @@ -19867,7 +20060,7 @@ msgstr "" "Podeu editar les entrades existents a l'índex fent-hi clic al panell de " "l'esquerra." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " @@ -19877,11 +20070,69 @@ msgstr "" "verificat que existeix. Les entrades amb un punt vermell no són vàlides i " "pot ser que calgui arreglar-les." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "Crea una entrada &nova" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "Genera un índex a partir dels títols &principals" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" +"Genera un índex a partir dels títols principals del llibre. Funcionarà si el " +"llibre identifica els títols utilitzant etiquetes d'encapçalament HTML. " +"Utilitza les etiquetes

,

i

." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "Genera un índex a partir de &tots els títols" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" +"Genera un índex a partir de tots els títols del llibre. Funcionarà si el " +"llibre identifica els títols utilitzant etiquetes d'encapçalament HTML. " +"Utilitza les etiquetes ." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "Genera un índex a partir dels en&llaços" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" +"Genera un índex a partir de tots els enllaços del llibre. S'ignoren els " +"enllaços que apunten a destinacions que no existeixen. També s'ignoren " +"enllaços múltiples amb la mateixa destinació o el mateix text." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "Genera un índex a partir d'&XPath" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "Genera un índex a partir d'expressions XPath arbitràries." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "Aplana l'índex" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "Aplana l'índex, posant totes les entrades al nivell superior" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -19893,7 +20144,7 @@ msgstr "" "prèvia. Si creeu un índex no lineal, es reordenarà automàticament a dins del " "fitxer AZW3." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" @@ -19901,72 +20152,80 @@ msgstr "" "Podeu desplaçar aquesta entrada per l'índex arrossegant-la i deixant-la anar " "o utilitzant els botons «Amunt» i «Avall» de l'esquerra" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "Canvia &la ubicació cap a on apunta l'entrada" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "Sup&rimeix l'entrada" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "Nova entrada a d&ins de l'entrada" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "Nova entrada al d&amunt de l'entrada" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "Nova entrada per &sota de l'entrada" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "&Aplana l'entrada" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "Tots els fills de l'entrada es duran al seu mateix nivell." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "To&rna a la pantalla de benvinguda" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "Torna a la visualització del nivell més alt" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "L'entrada apunta a una destinació existent" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "La ubicació cap a on apunta l'entrada no existeix" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "Mou cap amunt l'entrada actual" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "Suprimeix totes les entrades seleccionades" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "Mou cap avall l'entrada actual" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "&Expandeix-ho tot" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "Reduei&x-ho tot:" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "Feu doble clic a una entrada per canviar-ne el text" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "Títol: {0} Dest: {1}{2}" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" @@ -19975,36 +20234,49 @@ msgstr "" "La ubicació que apunta aquesta entrada no existeix:\n" "%s" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "No s'ha trobat cap element" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "No s'ha trobat cap element que es pogués afegir a l'índex." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "No s'ha trobat cap enllaç que es pogués afegir a l'índex." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "Edita l'ïndex a %s" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "S'està carregant %s, espereu..." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "S'està desant %s, espereu..." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "No s'ha pogut desar el llibre" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" "No s'ha pogut desar %s. Fer clic a «Mostra els detalls» per a més informació." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "La càrrega del llibre ha fallat" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -20016,11 +20288,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "S'ha convertit el llibre %(num)d de %(total)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "No s'ha pogut convertir" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -20033,21 +20305,21 @@ msgstr "" "hagueu mogut els fitxers a algun lloc des de fora del calibre. Haureu de " "trobar aquests fitxers i tornar-los a afegir al calibre." -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "No hi ha formats compatibles (formats disponibles: %s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "Aquest llibre no té fitxers de llibre" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "No s'ha pogut convertir alguns llibres" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " @@ -20056,20 +20328,20 @@ msgstr "" "No s'ha pogut convertir %(num)d of %(tot)d llibres perquè no s'ha trobat cap " "format font compatible." -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "S'està posant els llibre a la cua per a una conversió en massa" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "S'està posant a la cua " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "Converteix el llibre %(num)d de %(tot)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " @@ -20078,15 +20350,15 @@ msgstr "" "No s'ha pogut convertir %(num)d de %(tot)d llibres perquè no s'ha trobat cap " "format d'origen adequat." -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "Recull notícies de " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "La conversió ja existeix" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -21623,7 +21895,7 @@ msgstr "" "href=\"http://manual.calibre-ebook.com/faq.html#how-do-i-use-app-with-my-" "ipad-iphone-ipod-touch\">Manual d'usuari per a més informació." -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -21642,7 +21914,7 @@ msgstr "" "Per defecte: «%%default»\n" "S'aplica al format de sortida BIBTEX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -21655,7 +21927,7 @@ msgstr "" "Per defecte: «%default»\n" "S'aplica al format de sortida BIBTEX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -21668,7 +21940,7 @@ msgstr "" "Per defecte: «%default»\n" "S'aplica al format de sortida BIBTEX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -21682,7 +21954,7 @@ msgstr "" "Per defecte: «%default»\n" "S'aplica al format de sortida BIBTEX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -21698,7 +21970,7 @@ msgstr "" "Per defecte: «%%default»\n" "S'aplica al format de sortida BIBTEX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -21711,7 +21983,7 @@ msgstr "" "Per defecte: «%default»\n" "S'aplica al format de sortida BIBTEX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -21724,7 +21996,7 @@ msgstr "" "Per defecte: «%default»\n" "S'aplica al format de sortida BIBTEX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -21990,6 +22262,20 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" +"Utilitzeu un predefinit creat amb la interfície gràfica del\n" +"constructor de catàlegs. Un predefinit especifica tots\n" +"els paràmetres per a la construcció d'un catàleg.\n" +"Per defecte: «%default»\n" +"S'aplica als formats de sortida AZW3, ePub, MOBI" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" @@ -21998,7 +22284,7 @@ msgstr "" "Per defecte: «%default»\n" "S'aplica als formats de sortida AZW3, ePub i MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -22011,7 +22297,21 @@ msgstr "" "Per defecte: «%default»\n" "S'aplica als formats de sortida AZW3, ePub i MOBI" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "Error: No s'ha trobat el predefinit «%s»." + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "Predefinits desats: %s" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "Error: No hi ha predefinits desats." + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -22037,7 +22337,7 @@ msgid "No books available to catalog" msgstr "No es disposa de cap llibre per catalogar" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "Títols" @@ -22046,12 +22346,12 @@ msgid "Genres" msgstr "Gèneres" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "Afegits recentment" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "Llegits recentment" @@ -22088,103 +22388,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "No es disposa de cap llibre per incloure al catàleg." -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "HTML de Gèneres" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "HTML de Títols" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "per " -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "HTML de Descripcions" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "HTML de Descripció" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "Capçalera NCX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "NCX per a Descripcions" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "NCX per a Sèries" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "Sèries que comencen per %s" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "Sèries que comencen per «%s»" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "NCX per a Títols" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "Títols que comencen per %s" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "Títols que comencen per «%s»" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "NCX per a Autors" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "Autors que comencen per %s" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "Autors que comencen per «%s»" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "NCX per a Afegits recentment" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "NCX per a Llegits recentment" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "NCX per a Gèneres" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "S'està generant l'OPF" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "Miniatures" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "Miniatura" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "S'està desant l'NCX" @@ -22300,7 +22600,7 @@ msgstr "" "defecte no es filtra." #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -22564,17 +22864,23 @@ msgstr "Heu d'especificar un identificador de registre com a primer argument" msgid "You must specify either a field or an opf file" msgstr "Heu d'especificar o un camp o un arxiu opf" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "No hi ha cap llibre amb la ID: %s a la base de dades" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "El fitxer OPF %s no existeix" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "%s no és un camp conegut" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -22592,29 +22898,29 @@ msgstr "" "metadades (a un\n" "fitxer opf). Podeu aconseguir les IDs amb l'ordre «list».\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" "Exporta tots els llibres de la base de dades, ignorant la llista d'IDs." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "Exporta els llibres a la carpeta que s'indica. Per defecte és" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "Exporta tots els llibres a una carpeta" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "Si indiqueu aquesta opció es desactiva aquest comportament." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "Heu d'indicar alguna ID o l'opció %s" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -22631,7 +22937,7 @@ msgstr "" "espais ni dos punts. El nom és el nom visible de la columna. El tipus de " "dades és un de: {0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." @@ -22639,7 +22945,7 @@ msgstr "" "Aquesta columna emmagatzema les etiquetes com a dades (amb valors separats " "per comes). Només s'aplica si les dades són de tipus text." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -22676,11 +22982,11 @@ msgstr "" "de crear la columna). Veureu la cadena JSON per a «display» de la nova " "columna al fitxer OPF." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "Heu d'indicar etiqueta, nom i tipus de dades" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -22699,7 +23005,7 @@ msgstr "" "genera.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" @@ -22709,7 +23015,7 @@ msgstr "" "Si es declara, s'ignora --search.\n" "Per defecte: totes" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" @@ -22719,16 +23025,16 @@ msgstr "" "documentació del tema al Manual de l'usuari.\n" "Per defecte: sense filtre" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "Mostra informació de sortida detallada. Útil per a depurar" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "Error: Heu d'indicar un fitxer de sortida del catàleg" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -22749,7 +23055,7 @@ msgstr "" " l'ordre custom_columns.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." @@ -22757,11 +23063,11 @@ msgstr "" "Si la columna conté múltiples valors, afegeix els valors que s'indiquen als " "que ja hi ha, en lloc de substituir-los." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "Error: Heu d'indicar un nom de camp, ID i valor" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -22776,20 +23082,30 @@ msgstr "" "etiquetes de columna i les IDs.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "Mostra els detalls de cada columna." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " -msgstr "Perdreu totes les dades de la columna %r. N'esteu segur (s/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " +msgstr "Perdreu totes les dades de la columna: %s. N'esteu segur (s/n)? " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "s" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" +"No s'ha trobat cap columna anomenada %s. Heu d'utilitzar les etiquetes de " +"columna, no els títols. Utilitzeu «calibredb custom_columns» per aconseguir " +"una llista d'etiquetes." + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -22806,15 +23122,15 @@ msgstr "" " les columnes disponibles amb l'ordre custom_columns.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "No demanis confirmació" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "Error: Heu d'indicar una etiqueta per a la columna" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -22836,40 +23152,40 @@ msgstr "" " es sobreescriurà.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "Error: Heu d'indicar una acció (add/remove/list)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "Nom:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "Cadena de cerca:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "Error: Heu d'indicar un nom i una cadena de cerca" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "s'ha afegit" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "Error: Heu d'indicar un nom" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "s'ha suprimit" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "Error: No es reconeix l'acció %s, ha de ser una de «add/remove/list»" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -22897,7 +23213,7 @@ msgstr "" "una còpia de seguretat dels fitxers OPF cada cop que es canvien les " "metadades.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." @@ -22905,7 +23221,7 @@ msgstr "" "Normalment aquesta ordre només actua en llibres que tenen fitxers OPF " "obsolets. Aquesta opció fa que actuï en tots els llibres." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -22917,12 +23233,12 @@ msgstr "" "Fes algunes comprovacions al sistema de fitxers que hi ha en una biblioteca. " "Els resultats són {0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "Sortida CSV" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" @@ -22930,7 +23246,7 @@ msgstr "" "Llista d'informes separats per comes.\n" "Per defecte: tots" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" @@ -22938,7 +23254,7 @@ msgstr "" "Llista de les extensions que s'ignoraran separada per comes.\n" "Per defecte: totes" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" @@ -22946,11 +23262,11 @@ msgstr "" "Llista de noms que s'ignoraran separats per comes.\n" "Per defecte: tots" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "Informe de comprovació desconegut" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -22980,19 +23296,19 @@ msgstr "" "OPF.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" "Fes la recuperació. L'ordre no s'executa si no s'especifica aquesta opció." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "Heu d'introduir l'opció %s per fer una recuperació" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -23005,7 +23321,7 @@ msgstr "" "La\n" "informació equival al que es mostra a la subfinestra d'etiquetes.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" @@ -23013,7 +23329,7 @@ msgstr "" "Genera només la sortida del nombre d'elements en una categoria en lloc del " "recompte per element a cada categoria" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." @@ -23021,7 +23337,7 @@ msgstr "" "El caràcter que es posarà al voltant del valor de la categoria en mode CSV. " "Per defecte són les cometes (\")." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" @@ -23029,17 +23345,17 @@ msgstr "" "Llista separada per comes dels noms de la categoria de cerca.\n" "Per defecte: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" "La cadena que es farà servir per separar els camps en mode CSV. Per defecte " "és una coma." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "ELEMENTS DE LES CATEGORIES" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -23087,18 +23403,18 @@ msgstr "s'està creant una columna personalitzada " msgid " (%s books)" msgstr " (%s llibres)" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" "

S'està migrant la base de dades antiga a la biblioteca de %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "S'està copiant %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "S'està compactant la base de dades" @@ -24708,194 +25024,198 @@ msgid "English (Pakistan)" msgstr "Anglès (Paquistan)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 +msgid "English (Poland)" +msgstr "Anglès (Polònia)" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 msgid "English (Croatia)" msgstr "Anglès (Croàcia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 msgid "English (Hong Kong)" msgstr "Anglès (Hong Kong)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 msgid "English (Hungary)" msgstr "Anglès (Hongria)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 msgid "English (Indonesia)" msgstr "Anglès (Indonèsia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 msgid "English (Israel)" msgstr "Anglès (Israel)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 msgid "English (Russia)" msgstr "Anglès (Rússia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 msgid "English (Singapore)" msgstr "Anglès (Singapur)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 msgid "English (Yemen)" msgstr "Anglès (Iemen)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 msgid "English (Ireland)" msgstr "Anglès (Irlanda)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 msgid "English (China)" msgstr "Anglès (Xina)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 msgid "English (South Africa)" msgstr "Anglès (Sud-àfrica)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 msgid "Spanish (Paraguay)" msgstr "Espanyol (Paraguai)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 msgid "Spanish (Uruguay)" msgstr "Espanyol (Uruguai)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 msgid "Spanish (Argentina)" msgstr "Espanyol (Argentina)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 msgid "Spanish (Costa Rica)" msgstr "Espanyol (Costa Rica)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 msgid "Spanish (Mexico)" msgstr "Espanyol (Mèxic)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 msgid "Spanish (Cuba)" msgstr "Espanyol (Cuba)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 msgid "Spanish (Chile)" msgstr "Espanyol (Xile)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 msgid "Spanish (Ecuador)" msgstr "Espanyol (Equador)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 msgid "Spanish (Honduras)" msgstr "Espanyol (Hondures)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 msgid "Spanish (Venezuela)" msgstr "Espanyol (Veneçuela)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 msgid "Spanish (Bolivia)" msgstr "Espanyol (Bolívia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 msgid "Spanish (Nicaragua)" msgstr "Espanyol (Nicaragua)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 msgid "Spanish (Colombia)" msgstr "Espanyol (Colòmbia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 msgid "German (AT)" msgstr "Alemany (AT)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 msgid "French (BE)" msgstr "Francès (BE)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 msgid "Dutch (NL)" msgstr "Holandès (NL)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "Holandès (BE)" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "AM" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "PM" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "am" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "pm" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "&Copia" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "Selecciona-ho tot" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "&Selecciona-ho tot" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "Copia &la ubicació de l'enllaç" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "&Desfés" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "&Refés" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "Re&talla" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "&Enganxa" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "Enganxa i fes coincidir l'estil" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "Instruccions" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "D'esquerra a dreta" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "De dreta a esquerra" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "Tipus de lletra" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "Pa&s amunt" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "Pas a&vall" @@ -24973,7 +25293,7 @@ msgid "Unknown feed" msgstr "Canal desconegut" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "Article sense títol" @@ -24981,111 +25301,111 @@ msgstr "Article sense títol" msgid "Unknown News Source" msgstr "Font de notícies desconeguda" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "No s'ha pogut baixar %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "La recepta «%s» necessita usuari i contrasenya" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "S'ha finalitzat la baixada" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "No s'ha pogut baixar aquests articles:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "No s'ha pogut baixar part d'aquests articles:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr " des de " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "\tEnllaços que han fallat:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "No s'ha pogut aconseguir l'article." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "La traça de depuració està més amunt en aquest registre" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "Executeu amb -vv per saber-ne el motiu" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "S'està aconseguint els canals..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "S'ha aconseguit canals des de la pàgina principal" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "S'està intentant baixar la portada..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "S'està generant l'encapçalament..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "S'està iniciant la baixada [%d fils]" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "S'ha baixat els canals a %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "No s'ha pogut baixar la portada: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "Baixada de la portada de %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "S'ha baixat la imatge de capçalera" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "Articles en aquest exemplar: " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "Article sense títol" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "Article baixat: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "Ha fallat la baixada de l'article: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "S'està aconseguint el canal" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." @@ -25093,7 +25413,7 @@ msgstr "" "No s'ha pogut entrar, comproveu el nom d'usuari i la contrasenya del servei " "de publicacions periòdiques del calibre" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -25140,7 +25460,7 @@ msgstr "Seccions" msgid "Articles" msgstr "Articles" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" @@ -25150,12 +25470,12 @@ msgstr "" "\n" "Amb un URL com http://google.com, per exemple" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "Carpeta on es desa l'URL. Per defecte %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " @@ -25164,7 +25484,7 @@ msgstr "" "Temps d'espera en segons per a rebre una resposta des del servidor. Per " "defecte: %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " @@ -25173,7 +25493,7 @@ msgstr "" "Número màxim de nivells que s'inclouen, és a dir profunditat dels enllaços " "que es segueixen. Per defecte %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from . Per defecte %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "Interval màxim en segons entre descàrregues. Per defecte %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -25197,7 +25517,7 @@ msgstr "" "La codificació de caràcters de les pàgines web que esteu intentant baixar. " "Per defecte s'intenta endevinar la codificació." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -25208,7 +25528,7 @@ msgstr "" "seguirà si coincideix amb qualsevol expressió regular. Per defecte es " "segueixen tots els enllaços." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -25221,7 +25541,7 @@ msgstr "" "s'ignora cap enllaç. Si s'especifiquen expressions regulars de filtre i de " "coincidència s'aplica primer l'expressió regular de filtre." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "No baixis els fulls d'estil CSS" @@ -25229,10 +25549,6 @@ msgstr "No baixis els fulls d'estil CSS" msgid "OK" msgstr "D'acord" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "Desa" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "Obre" diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index 84a544001b..3e56497f17 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: calibre 0.9.24\n" -"POT-Creation-Date: 2013-03-22 08:59+IST\n" -"PO-Revision-Date: 2013-03-22 08:59+IST\n" +"Project-Id-Version: calibre 0.9.26\n" +"POT-Creation-Date: 2013-04-05 08:39+IST\n" +"PO-Revision-Date: 2013-04-05 08:39+IST\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -21,11 +21,14 @@ msgid "Does absolutely nothing" msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -94,9 +97,9 @@ 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:50 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/base.py:347 -#: /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/base.py:350 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:84 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/covers.py:86 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/douban.py:79 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:259 @@ -105,7 +108,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/identify.py:468 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:59 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/ozon.py:130 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/worker.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:18 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:98 @@ -149,24 +152,24 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:193 #: /home/kovid/work/calibre/src/calibre/gui2/email.py:208 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:475 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1178 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1394 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1397 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1400 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1488 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:482 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1185 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1401 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1404 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1407 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1495 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:250 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:261 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:426 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:202 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/google_books_plugin.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:209 @@ -176,12 +179,12 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 @@ -314,330 +317,330 @@ msgstr "" msgid "Set metadata from %s files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:770 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:771 msgid "Add books to calibre or the connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:775 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:776 msgid "Fetch annotations from a connected Kindle (experimental)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:780 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:781 msgid "Generate a catalog of the books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:785 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:786 msgid "Convert books to various ebook formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:790 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:791 msgid "Fine tune your ebooks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:795 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:796 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:63 msgid "Edit the Table of Contents in your books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:800 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:801 msgid "Delete books from your calibre library or connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:805 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:806 msgid "Edit the metadata of books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:810 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:811 msgid "Read books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:815 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:816 msgid "Download news from the internet in ebook form" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:820 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:821 msgid "Show a list of related books quickly" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:825 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:826 msgid "Export books from your calibre library to the hard disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:830 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:831 msgid "Show book details in a separate popup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:835 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:836 #: /home/kovid/work/calibre/src/calibre/gui2/actions/restart.py:14 msgid "Restart calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:840 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:841 msgid "Open the folder that contains the book files in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:846 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:847 msgid "Send books to the connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:851 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:852 msgid "Send books via email or the web also connect to iTunes or folders on your computer as if they are devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:857 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:858 #: /home/kovid/work/calibre/src/calibre/gui2/actions/help.py:16 msgid "Browse the calibre User Manual" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:862 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:863 msgid "Customize calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:867 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:868 msgid "Easily find books similar to the currently selected one" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:872 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:873 msgid "Switch between different calibre libraries and perform maintenance on them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:878 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:879 msgid "Copy books from the devce to your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:883 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:884 msgid "Edit the collections in which books are placed on your device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:888 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:889 msgid "Copy a book from one calibre library to another" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:893 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:894 msgid "Make small tweaks to epub or htmlz files in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:898 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:899 msgid "Find the next or previous match when searching in your calibre library in highlight mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:904 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:905 msgid "Choose a random book from your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:911 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:912 msgid "Search for books from different book sellers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:927 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:928 msgid "Get new calibre plugins or update your existing ones" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:946 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:947 msgid "Look and Feel" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:948 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:960 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:971 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:982 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:994 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:949 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:961 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:972 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:983 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:995 msgid "Interface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:952 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:953 msgid "Adjust the look and feel of the calibre interface to suit your tastes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:958 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:959 msgid "Behavior" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:964 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:965 msgid "Change the way calibre behaves" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:969 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:970 #: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:276 msgid "Add your own columns" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:975 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:976 msgid "Add/remove your own columns to the calibre book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:980 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:981 msgid "Toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:986 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:987 msgid "Customize the toolbars and context menus, changing which actions are available in each" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:992 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:993 msgid "Searching" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:998 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:999 msgid "Customize the way searching for books works in calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1003 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1004 msgid "Input Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1005 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1016 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1027 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1006 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1017 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1028 msgid "Conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1009 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1010 msgid "Set conversion options specific to each input format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1014 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1015 msgid "Common Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1020 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1021 msgid "Set conversion options common to all formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1025 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1026 msgid "Output Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1031 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1032 msgid "Set conversion options specific to each output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1036 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1037 msgid "Adding books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1038 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1050 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1062 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1074 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1039 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1051 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1063 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1075 msgid "Import/Export" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1042 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1043 msgid "Control how calibre reads metadata from files when adding books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1048 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1049 msgid "Saving books to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1054 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1055 msgid "Control how calibre exports files from its database to disk when using Save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1060 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1061 msgid "Sending books to devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1066 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1067 msgid "Control how calibre transfers files to your ebook reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1072 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1073 msgid "Metadata plugboards" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1078 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1079 msgid "Change metadata fields before saving/sending" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1083 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1084 msgid "Template Functions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1085 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1145 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1157 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1168 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1179 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1086 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1146 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1158 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1169 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1180 msgid "Advanced" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1089 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1090 msgid "Create your own template functions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1094 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1095 msgid "Sharing books by email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1096 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1108 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1121 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1132 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1097 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1109 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1122 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1133 msgid "Sharing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1100 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1101 msgid "Setup sharing of books via email. Can be used for automatic sending of downloaded news to your devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1106 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1107 msgid "Sharing over the net" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1112 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1113 msgid "Setup the calibre Content Server which will give you access to your calibre library from anywhere, on any device, over the internet" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1119 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1120 msgid "Metadata download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1125 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1126 msgid "Control how calibre downloads ebook metadata from the net" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1130 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1131 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/mtp_config.py:400 msgid "Ignored devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1136 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1137 msgid "Control which devices calibre will ignore when they are connected to the computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1143 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1144 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:296 msgid "Plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1149 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1150 msgid "Add/remove/customize various bits of calibre functionality" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1155 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1156 msgid "Tweaks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1161 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1162 msgid "Fine tune how calibre behaves in various contexts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1166 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1167 msgid "Keyboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1172 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1173 msgid "Customize the keyboard shortcuts used by calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1177 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1178 #: /home/kovid/work/calibre/src/calibre/gui2/keyboard.py:110 msgid "Miscellaneous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1183 +#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:1184 msgid "Miscellaneous advanced configuration" msgstr "" @@ -888,8 +891,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -899,7 +902,7 @@ msgstr "" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -914,27 +917,27 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:107 #: /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:773 @@ -951,7 +954,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1159,8 +1162,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "" @@ -1877,7 +1880,7 @@ msgstr "" msgid "Communicate with the Nook eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:85 +#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:86 msgid "Communicate with the Nook Color, TSR and Tablet eBook readers." msgstr "" @@ -2292,7 +2295,7 @@ msgid "There is insufficient free space on the storage card" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:210 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/render/from_html.py:255 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/render/from_html.py:274 #, python-format msgid "Rendered %s" msgstr "" @@ -2764,11 +2767,17 @@ msgid "Add page numbers to the bottom of every page in the generated PDF file. I msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:107 -msgid "An HTML template used to generate footers on every page. The string _PAGENUM_ will be replaced by the current page number." +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:110 +#, python-format +msgid "An HTML template used to generate %s on every page. The strings _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_ will be replaced by their current values." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:108 +msgid "footers" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:111 -msgid "An HTML template used to generate headers on every page. The string _PAGENUM_ will be replaced by the current page number." +msgid "headers" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pml_output.py:22 @@ -3512,9 +3521,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:76 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:222 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1183 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1190 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:162 #: /home/kovid/work/calibre/src/calibre/gui2/store/search/models.py:39 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 @@ -3525,14 +3534,14 @@ msgid "Title" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:770 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1184 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1191 #: /home/kovid/work/calibre/src/calibre/gui2/store/stores/mobileread/models.py:23 msgid "Author(s)" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:771 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:129 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:159 msgid "Publisher" msgstr "" @@ -3568,7 +3577,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:161 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:981 @@ -3583,7 +3592,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/quickview.py:89 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/template_dialog.py:224 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:131 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 @@ -3595,7 +3604,7 @@ msgstr[0] "" msgstr[1] "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:778 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:133 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:164 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:127 msgid "Languages" @@ -3607,8 +3616,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:782 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:149 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:305 msgid "Published" msgstr "" @@ -3780,6 +3789,49 @@ msgstr "" msgid "Downloads metadata and covers from Google Books" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:18 +msgid "Downloads covers from a Google Image search. Useful to find larger/alternate covers." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:20 +msgid "Configure the Google Image Search plugin" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:22 +msgid "Maximum number of covers to get" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:23 +msgid "The maximum number of covers to process from the google search result" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:24 +msgid "Cover size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:25 +msgid "Search for covers larger than the specified size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:27 +msgid "Any size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 +msgid "Large" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:29 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:30 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:31 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:33 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/google_images.py:34 +#, python-format +msgid "Larger than %s" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/isbndb.py:24 msgid "Downloads metadata from isbndb.com" msgstr "" @@ -3856,9 +3908,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:373 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:343 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:356 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4111,9 +4163,9 @@ msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:494 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:669 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:684 msgid "(Untitled)" msgstr "" @@ -4129,7 +4181,7 @@ msgid "HTML TOC generation options." msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:128 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:160 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:176 @@ -4173,6 +4225,10 @@ msgstr "" msgid "Could not find pdftohtml, check it is in your PATH" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/render/from_html.py:310 +msgid "Untitled" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:97 msgid "Table of Contents:" @@ -4629,7 +4685,7 @@ msgid "Select destination for %(title)s.%(fmt)s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:993 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 @@ -4909,12 +4965,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5137,11 +5192,13 @@ msgid "Some of the selected books are on the attached device. Where do yo msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:350 -msgid "The selected books will be permanently deleted and the files removed from your calibre library. Are you sure?" +#, python-format +msgid "The %d selected book(s) will be permanently deleted and the files removed from your calibre library. Are you sure?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/delete.py:385 -msgid "The selected books will be permanently deleted from your device. Are you sure?" +#, python-format +msgid "The %d selected book(s) will be permanently deleted from your device. Are you sure?" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/device.py:33 @@ -5303,8 +5360,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:129 #: /home/kovid/work/calibre/src/calibre/gui2/dnd.py:84 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:846 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:882 msgid "Download failed" msgstr "" @@ -5336,7 +5393,7 @@ msgid "Download complete" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/edit_metadata.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:908 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:945 msgid "Download log" msgstr "" @@ -6363,16 +6420,7 @@ msgstr "" msgid "&Multiple books per folder, assumes every ebook file is a different book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -6398,7 +6446,7 @@ msgid "Book %(sidx)s of %(series)s" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:233 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1187 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1194 msgid "Collections" msgstr "" @@ -6427,7 +6475,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -6509,13 +6557,13 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:124 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:43 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:139 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pmlz_output_ui.py:46 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:33 #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7894,56 +7942,60 @@ msgstr "" msgid "PDF Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:140 msgid "Note: The paper size settings below only take effect if you enable the \"Override\" checkbox below. Otherwise the size from the output profile will be used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:119 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:141 msgid "&Override paper size set in output profile" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:142 msgid "&Paper Size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:143 msgid "&Custom size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:122 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:144 msgid "&Unit:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:145 msgid "Preserve &aspect ratio of cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:146 +msgid "Add page &numbers to the bottom of every page" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:147 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:392 msgid "Se&rif family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:148 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:393 msgid "&Sans family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:149 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:394 msgid "&Monospace family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:150 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:399 msgid "S&tandard font:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:151 msgid "Default font si&ze:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:129 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:154 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:280 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:396 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:398 @@ -7955,13 +8007,25 @@ msgstr "" msgid " px" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/config_ui.py:397 msgid "Monospace &font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:132 -msgid "Add page &numbers to the bottom of every page" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:155 +msgid "Page headers and footers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:156 +msgid "You can insert headers and footers into every page of the produced PDF file by using header and footer templates. For examples, see the documentation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:157 +msgid "&Header template:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:158 +msgid "&Footer template:" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pml_output.py:14 @@ -8186,7 +8250,7 @@ msgstr "" msgid "

Search and replace uses regular expressions. See the regular expressions tutorial to get started with regular expressions. Also clicking the wizard button below will allow you to test your regular expression against the current input document. When you are happy with an expression, click the Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -8304,30 +8368,45 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -8981,7 +9060,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/mtp_config.py:421 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/message_box.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:901 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:938 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/tweaks.py:344 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:227 msgid "Copy to clipboard" @@ -9092,6 +9171,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9109,7 +9198,7 @@ msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -9480,8 +9569,8 @@ msgid "Location" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/delete_matching_from_device.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1185 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1192 #: /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 @@ -9571,6 +9660,10 @@ msgid "" " available at Open Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "Books with the same titles as the following already exist in calibre. Select which books you want added anyway." msgstr "" @@ -9594,7 +9687,7 @@ 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:543 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:542 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:753 msgid "No matches found" msgstr "" @@ -9773,8 +9866,8 @@ msgstr "" #: /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:966 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1075 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1003 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1112 #: /home/kovid/work/calibre/src/calibre/gui2/proceed.py:48 msgid "View log" msgstr "" @@ -12189,62 +12282,62 @@ msgstr "" msgid "Y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:285 msgid "On Device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:118 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:125 msgid "Size (MB)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:132 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:275 msgid "Modified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:893 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1530 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:900 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1537 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:337 msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:899 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1532 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:906 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1539 msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:994 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:479 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:991 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:997 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1004 msgid "Failed to set data" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:992 -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:998 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:999 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1005 msgid "Could not set data, click Show Details to see why." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1182 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1189 msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1186 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1193 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:355 msgid "Size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1512 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1519 msgid "Marked for deletion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1515 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1522 msgid "Double click to edit me

" msgstr "" @@ -12347,7 +12440,7 @@ 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:963 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1000 #: /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:215 msgid "Back" @@ -12816,7 +12909,7 @@ msgid "Edit Metadata" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:956 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:993 #: /home/kovid/work/calibre/src/calibre/library/server/browse.py:108 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:219 #: /home/kovid/work/calibre/src/calibre/web/feeds/templates.py:410 @@ -12952,15 +13045,15 @@ msgstr "" msgid "Basic metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:149 msgid "Has cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:149 msgid "Has summary" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:206 msgid "" "The has cover indication is not fully\n" "reliable. Sometimes results marked as not\n" @@ -12968,62 +13061,62 @@ msgid "" "cover stage, and vice versa." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:300 msgid "See at" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:461 msgid "calibre is downloading metadata from: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:484 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:483 msgid "Please wait" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:515 msgid "Query: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:534 msgid "Failed to download metadata. Click Show Details to see details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:543 msgid "Failed to find any books that match your search. Try making the search less specific. For example, use only the author's last name and a single distinctive word from the title.

To see the full log, click Show Details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:652 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:651 msgid "Current cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:655 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:654 msgid "Searching..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:816 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:852 #, python-format msgid "Downloading covers for %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:847 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:883 msgid "Failed to download any covers, click \"Show details\" for details." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:853 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:889 #, python-format msgid "Could not find any covers for %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:855 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:891 #, python-format -msgid "Found %(num)d covers of %(title)s. Pick the one you like best." +msgid "Found %(num)d possible covers for %(title)s. When the download completes, the covers will be sorted by size." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:981 msgid "Downloading metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1059 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single_download.py:1096 msgid "Downloading cover..." msgstr "" @@ -14084,10 +14177,6 @@ msgstr "" msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 -msgid "Large" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" @@ -16128,39 +16217,74 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "Here you can choose a destination for the Table of Contents' entry to point to. First choose a file from the book in the left-most panel. The file will open in the central panel.

Then choose a location inside the file. To do so, simply click on the place in the central panel that you want to use as the destination. As you move the mouse around the central panel, a thick green line appears, indicating the precise location that will be selected when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "No matches for %(text)s found in the current file [%(current)s]. Do you want to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" @@ -16199,179 +16323,233 @@ msgstr "" msgid "The XPath expression %s is not valid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:147 msgid "You can edit existing entries in the Table of Contents by clicking them in the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:149 msgid "Entries with a green tick next to them point to a location that has been verified to exist. Entries with a red dot are broken and may need to be fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:155 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:157 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:160 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:162 msgid "Generate ToC from &major headings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:165 msgid "Generate a Table of Contents from the major headings in the book. This will work if the book identifies its headings using HTML heading tags. Uses the

,

and

tags." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:169 msgid "Generate ToC from &all headings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:172 msgid "Generate a Table of Contents from all the headings in the book. This will work if the book identifies its headings using HTML heading tags. Uses the tags." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:177 msgid "Generate ToC from &links" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:180 msgid "Generate a Table of Contents from all the links in the book. Links that point to destinations that do not exist in the book are ignored. Also multiple links with the same destination or the same text are ignored." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:187 +msgid "Generate ToC from &files" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:190 +msgid "Generate a Table of Contents from individual files in the book. Each entry in the ToC will point to the start of the file, the text of the entry will be the \"first line\" of text from the file." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 msgid "Generate ToC from &XPath" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:199 msgid "Generate a Table of Contents from arbitrary XPath expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:203 +msgid "&Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:206 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 msgid "WARNING: calibre only supports the creation of linear ToCs in AZW3 files. In a linear ToC every entry must point to a location after the previous entry. If you create a non-linear ToC it will be automatically re-arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:210 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:228 msgid "You can move this entry around the Table of Contents by drag and drop or using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:231 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:249 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:248 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:266 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:269 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:255 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:273 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:257 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:275 msgid "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:268 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:286 msgid "&Return to welcome screen" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:288 msgid "Go back to the top level view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:338 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:341 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 -msgid "Move current entry up" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:519 +#, python-format +msgid "Move \"%s\" up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:521 +#, python-format +msgid "Move \"%s\" down" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:522 +msgid "Remove all selected items" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#, python-format +msgid "Unindent \"%s\"" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:526 +#, python-format +msgid "Indent \"%s\"" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:527 +msgid "Change all selected items to title case" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:545 +msgid "Move current entry up [Ctrl+Up]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:566 +msgid "Unindent the current entry [Ctrl+Left]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:559 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:373 -msgid "Move current entry down" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:573 +msgid "Move current entry down [Ctrl+Down]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:575 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:579 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:582 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:485 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:660 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:691 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:606 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:613 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:781 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:788 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:795 msgid "No items found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:607 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:782 msgid "No items were found that could be added to the Table of Contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:614 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:789 msgid "No links were found that could be added to the Table of Contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:631 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:796 +msgid "No files were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:814 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:647 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:830 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:865 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:873 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:874 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:728 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:911 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:729 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:912 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -16381,61 +16559,61 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "Could not convert %s as it has no ebook files. If you think it should have files, but calibre is not finding them, that is most likely because you moved the book's files around outside of calibre. You will need to find those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "Could not convert %(num)d of %(tot)d books, because no supported source formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "Could not convert %(num)d of %(tot)d books, because no suitable source format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "The following books have already been converted to %s format. Do you wish to reconvert them?" msgstr "" @@ -18245,7 +18423,7 @@ msgid "Filter the results by the search query. For the format of the search quer msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "The maximum width of a single line in the output. Defaults to detecting screen size." msgstr "" @@ -18419,17 +18597,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -18438,28 +18622,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -18468,11 +18652,11 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "This column stores tag like data (i.e. multiple comma separated values). Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be interpreted. This is a JSON string. For enumeration columns, use --display=\"{\\\"enum_values\\\":[\\\"val1\\\", \\\"val2\\\"]}\"\n" "There are many options that can go into the display variable.The options by column type are:\n" @@ -18485,11 +18669,11 @@ msgid "" "The best way to find legal combinations is to create a customcolumn of the appropriate type in the GUI then look at thebackup OPF for a book (ensure that a new OPF has been createdsince the column was added). You will see the JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -18499,29 +18683,29 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -18533,15 +18717,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "If the column stores multiple values, append the specified values to the existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -18550,20 +18734,25 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "No column named %s found. You must use column labels, not titles. Use calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -18573,15 +18762,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -18594,40 +18783,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -18639,45 +18828,45 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "Normally, this command only operates on books that have out of date OPF files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" "Perform some checks on the filesystem representing a library. Reports are {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -18692,16 +18881,16 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "Really do the recovery. The command will not run unless this option is specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -18709,29 +18898,29 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "Output only the number of items in a category instead of the counts per item within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "The character to put around the category value in CSV mode. Default is quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -18766,17 +18955,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -20172,51 +20361,51 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:575 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "Timeout in seconds to wait for a response from the server. Default: %default s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "Maximum number of levels to recurse i.e. depth of links to follow. Default %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:589 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "Minimum interval in seconds between consecutive fetches. Default is %default s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:591 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "The character encoding for the websites you are trying to download. The default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:593 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "Only links that match this regular expression will be followed. This option can be specified multiple times, in which case as long as a link matches any one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:595 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "Any link that matches this regular expression will be ignored. This option can be specified multiple times, in which case as long as any regexp matches a link, it will be ignored. By default, no links are ignored. If both filter regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:597 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -20310,7 +20499,7 @@ msgid "Splitting multiple author names" msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:78 -msgid "By default, calibre splits a string containing multiple author names on\nampersands and the words \"and\" and \"with\". You can customize the splitting\nby changing the regular expression below. Strings are split on whatever the\nspecified regular expression matches.\nDefault: r'(?i),?\\s+(and|with)\\s+'" +msgid "By default, calibre splits a string containing multiple author names on\nampersands and the words \"and\" and \"with\". You can customize the splitting\nby changing the regular expression below. Strings are split on whatever the\nspecified regular expression matches, in addition to ampersands.\nDefault: r'(?i),?\\s+(and|with)\\s+'" msgstr "" #: /home/kovid/work/calibre/resources/default_tweaks.py:85 diff --git a/src/calibre/translations/cs.po b/src/calibre/translations/cs.po index 4696244ba1..b3756e257c 100644 --- a/src/calibre/translations/cs.po +++ b/src/calibre/translations/cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2013-02-13 10:34+0000\n" "Last-Translator: Jakub Jezbera \n" "Language-Team: Czech \n" @@ -15,19 +15,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Launchpad-Export-Date: 2013-03-16 04:37+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:10+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Nedělá vůbec nic" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Nedělá vůbec nic" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Nedělá vůbec nic" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Nedělá vůbec nic" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Nedělá vůbec nic" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Nedělá vůbec nic" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -985,8 +988,8 @@ msgstr "Povolit uvedený modul" msgid "Disable the named plugin" msgstr "Zakázat uvedený modul" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -996,7 +999,7 @@ msgstr "Zakázat uvedený modul" msgid "Path to library too long. Must be less than %d characters." msgstr "Cesta ke složce knihovny je moc dlouhá. Musí mít méně než %d znaků." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1011,25 +1014,25 @@ msgstr "Ano" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)s Průměrné hodnocení je %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Hlavní" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Karta A" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Karta B" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1048,7 +1051,7 @@ msgstr "Karta B" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Zprávy" @@ -1317,8 +1320,8 @@ msgstr "" "Pro zobrazení seznamu klepněte na 'Zobrazit podrobnosti'." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Katalog" @@ -2020,8 +2023,8 @@ msgid "Communicate with the Ex124G" msgstr "Komunikace s Ex124G" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" -msgstr "Komunikovat s WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" +msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 msgid "MTP Device" @@ -2687,7 +2690,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2735,29 +2738,29 @@ msgstr "" "\n" "Pro plnou dokumentaci převodního systému si prohlédněte\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "NASTAVENÍ VSTUPU" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "NASTAVENÍ VÝSTUPU" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "Možnosti nastavení zpracování vstupního souboru %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "Možnosti nastavení zpracování výstupního souboru %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "Možnosti nastavení vzheldu výstupu" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2768,16 +2771,16 @@ msgstr "" "standardním nastavení vypnuto. Použijte %(en)s k zapnutí. Jednotlivé akce " "mohou být zakázány pomocí nastavení %(dis)s." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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 "Upravit text a strukturu dokumentu pomocí určených šablon." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "Nastavení autodetekce struktury dokumentu." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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 " @@ -2786,21 +2789,21 @@ msgstr "" "Nastavuje automatické vytváření obsahu. Ve výchozím nastavení, pokud má " "zdrojový soubor obsah, bude použit přednostně před automaticky vytvořeným." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "Nastavení výstupních metadat" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "Nastavení pomáhající s laděním převodu" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "Výstup uložen do" @@ -3033,7 +3036,7 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "pro kompletní seznam s popisky." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -3041,7 +3044,7 @@ msgstr "" "Procházet HTML odkazy nejdříve do šířky. Obyčejně jsou procházeny nejdříve " "do hloubky." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -3052,7 +3055,7 @@ msgstr "" "znamená, že v kořenovém souboru HTML nejsou procházeny žádné odkazy. Výchozí " "je %default." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4574,20 +4577,23 @@ msgstr "Komentáře" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4608,7 +4614,7 @@ msgstr "Štítky" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4775,52 +4781,52 @@ msgstr "" msgid "Cover" msgstr "Obálka" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "Stáhnout metadata a obálky z Amazonu" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "US" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "Francie" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "Německo" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "UK" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "Itálie" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "Japonsko" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "Španělsko" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "Stránka Amazonu k použití:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "Metadata od Amazonu budou načtena pomocí místní stránky Amazon." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "Spojení s Amazonem vypršelo. Zkuste to později." @@ -4949,9 +4955,9 @@ msgstr "Žádné detaily nejsou k dispozici" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -5061,7 +5067,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -5200,22 +5206,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5772,6 +5785,21 @@ msgstr "Exportovat adresář s katalogy" msgid "Select destination for %(title)s.%(fmt)s" msgstr "Vyberte umístění pro %(title)s.%(fmt)s" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "Přístup odmítnut" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "Nelze otevřít %s. Je používán jiným programem?" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -6072,12 +6100,11 @@ msgstr "Nelze převést" msgid "Starting conversion of %d book(s)" msgstr "Zahajuji konverzi %d knih(y)" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "Výstupní soubor je prázdný, pravděpodobně proces převodu havaroval" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -6184,7 +6211,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6852,14 +6879,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7629,7 +7659,7 @@ msgstr "" "knihovny" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7699,19 +7729,7 @@ msgid "" "&Multiple books per folder, assumes every ebook file is a different book" msgstr "&Více knih ve složce znamené, že každý ebook soubor je různá kniha" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "Byly nalezeny duplikáty!" - -#: /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?" -msgstr "" -"Knihy se stejným názvem jsou již v databázi. Mají být přesto přidány?" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7766,7 +7784,7 @@ msgid "Path" msgstr "Cesta" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "Velikost obálky: %(width)d x %(height)d" @@ -7787,7 +7805,7 @@ msgstr "BibTeX volby" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7811,7 +7829,7 @@ msgstr "Možnosti specifické pro" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7830,7 +7848,7 @@ msgstr "výstup" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7854,7 +7872,7 @@ msgstr "výstup" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7931,78 +7949,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "CSV/XML volby" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "E-book volby" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "Katalogy" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "Číst knihu" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "jakékoli datum" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "jakákoli hodnota" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "nezadáno" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "Opravdu chcete smazat '%s'?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "Opravdu chcete smazat pravidla #%(first)d-%(last)d?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "Smazat pravidlo" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "Nepravda" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "Pravda" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -8010,77 +8056,128 @@ msgstr "Pravda" msgid "Name" msgstr "Jméno" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "Pole" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "Hodnota" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "Předpona" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "Uložit" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "Smazat" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "Zahrnuté sekce" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "&Autoři" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "&Tituly" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "&Série" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "&Žánry" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "&Nedávno přidané" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "&Popisy" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "Předpony" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "Vynechané knihy" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -8088,102 +8185,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "Vynechané žánry" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "Obnovit na výchozí hodnotu" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "Další volby" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "&Před" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "&Po" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "Zahrnout &oddělovač" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "&Sloučit s komentářem:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "Obálka katalogu" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "Vygenerovat novou obálku" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "Použít existující obálku" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr " palec" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -9541,7 +9639,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "Převést" @@ -9610,6 +9708,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "Neplatný XPath" @@ -9667,30 +9766,48 @@ msgstr "Obsah úroveň 2 (XPath výraz):" msgid "Level &3 TOC (XPath expression):" msgstr "Obsah úroveň 3 (XPath výraz):" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "&Nepřidávat automaticky rozpoznané kapitoly do Obsahu" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "&Počet odkazů, které budou přidány do Obsahu" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "Prahová úroveň &kapitol" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "&Vždy použít automaticky generovaný obsah" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "&Nepřidávat automaticky rozpoznané kapitoly do Obsahu" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "&Počet odkazů, které budou přidány do Obsahu" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "Filtr obsahu:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "Prahová úroveň &kapitol" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "TXT vstup" @@ -9884,11 +10001,11 @@ msgstr "" "XPath, podívejte se na XPath tutorial." -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "Prohlížet obálky" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "Prohlížeč obálek nemohl být nahrán" @@ -10519,6 +10636,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "Přizpůsobit obálku bez náhledu" @@ -10527,16 +10654,16 @@ msgstr "Přizpůsobit obálku bez náhledu" msgid "My Books" msgstr "Moje knihy" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "Generovat katalog" @@ -11128,6 +11255,10 @@ msgstr "" " k dispozici na Open " "Books." +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "Byly nalezeny duplikáty!" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -11502,10 +11633,6 @@ msgstr "Uložit najít/nahradit" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11742,11 +11869,6 @@ msgstr "Uložit současné najít/nahradit" msgid "Sa&ve" msgstr "&Uložit" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "Smazat" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "Vyhledávací &pole:" @@ -12256,7 +12378,7 @@ msgstr "Ruším..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Autoři" @@ -13688,46 +13810,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "Prohlížeč obálek" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "Shift+Alt+B" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "Prohlížeč štítků" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "Shift+Alt+T" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "verze" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "vytvořil Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " msgstr "Připojeno " -#: /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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "Podrobnosti o knize" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "Shift+Alt+D" @@ -14000,14 +14122,6 @@ msgstr "Hledaný název je \"{0}\"" msgid "This book's UUID is \"{0}\"" msgstr "UUID knihy je \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "Přístup odmítnut" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -14199,57 +14313,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "Calibre knihovna" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "Vyberte umístění pro Vaši Calibre e-book knihovnu" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "Nepodařilo se vytvořit knihovnu" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "Nepodařilo se vytvořit Calibre knihovnu v: %r." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "Vyberte umístění pro Vaši novou Calibre e-book knihovnu" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "Inicializuji uživatelské rozhraní..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "Oprava selhala" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "Oprava databáze se nezdařila. Startuji s novou prázdnou knihovnou." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "Neplatné umístění databáze" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "Špatné umístění databáze %r. Calibre bude nyní ukončeno." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "Poškozená databáze" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -14257,61 +14371,61 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" "Špatné umístění databáze %r. Začne se s novou, prázdnou Calibre knihovnou" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "Spouštění %s: Načítání knih..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "Jste si jisti, že není spuštěn" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "může být spuštěn v systémové liště, v" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "pravá horní oblast obrazovky" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "pravý dolní okraj obrazovky" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "skuste restartovat počítač." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "pokuste se vymazat smazat soubor" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "Nemůžu spistit " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "%s je již spuštěno" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -14754,11 +14868,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "Nelze otevřít %s. Je používán jiným programem?" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -15509,28 +15618,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "Musíte vybrat sloupec pro odstranění" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "Vybraný sloupec není uživatelský sloupec" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "Opravdu chcete odstranit sloupec %s a všechna jeho data?" @@ -16080,68 +16189,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "Úzký" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "Široký" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "Malé" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "Velké" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "Střední" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "Vždy" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "Nikdy" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "Podle prvního písmena" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "Deaktivováno" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "Rozděleno" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "Barvení sloupců" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -18361,11 +18470,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -18376,59 +18497,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -18436,113 +18662,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -18552,11 +18799,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "Převedení knihy %(num)d z %(total)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -18565,41 +18812,41 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "Některé knihy nebylo možné převést" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "Zařazování knih do fronty pro bulk zpracování" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "Vkládání do fronty " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "Převést knihu %(num)d z %(tot)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " @@ -18607,15 +18854,15 @@ msgid "" msgstr "" "Nelze převézt %(num)d z %(tot)d knih, protože nejsou ve vhodném formátu." -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "Stáhnout zprávy z " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "Konverze existujících" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -20042,7 +20289,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -20054,7 +20301,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -20063,7 +20310,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -20076,7 +20323,7 @@ msgstr "" "Výchozí: '%default'\n" "Používá se na: BIBTEX výstupní formát" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -20085,7 +20332,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -20095,7 +20342,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -20108,7 +20355,7 @@ msgstr "" "Výchozí: '%default'\n" "Platí pro: výstupní formát BIBTEX" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -20121,7 +20368,7 @@ msgstr "" "Výchozí: '%default'\n" "Použije se na: BIBTEX výstupní formát" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -20303,12 +20550,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -20317,7 +20573,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -20340,7 +20610,7 @@ msgid "No books available to catalog" msgstr "Žádné dostupné knihy do katalogu" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -20349,12 +20619,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -20388,103 +20658,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "Žádné dostupné knihy k zařazení do katalogu" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -20591,7 +20861,7 @@ msgstr "" "Výchozí je neprovádět žádné filtrování." #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -20808,17 +21078,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -20829,28 +21105,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "Exportovat všechny knihy do databáze bez ohledu na ID." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "Exportovat knihy do adresáře. Výchozí je" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "Exportovat všechny knihy do jednoho adresáře" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "Nastavení tohoto přepínače vypne toto chování." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "Musíte specifikovat nějaká IDčka, nebo %s volby" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -20861,7 +21137,7 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." @@ -20869,7 +21145,7 @@ msgstr "" "Tento sloupec ukládá tagy jako data (mnoho čárkou oddělených hodnot). " "Použitelné pouze pokud je datový typ text." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -20889,11 +21165,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "Musíte zadat označení, název a datový typ" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -20904,7 +21180,7 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" @@ -20914,7 +21190,7 @@ msgstr "" "Pokud je deklarováno, volba --search je ignorována.\n" "Výchozí: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" @@ -20925,17 +21201,17 @@ msgstr "" "příručce.\n" "Výchozí: bez filtrování" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" "Zobrazit podrobné výstupní informace. Užitečné pro hledání chyb v programu" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "Chyba: Musíte zadat výstupní soubor katalogu" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -20947,7 +21223,7 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." @@ -20955,11 +21231,11 @@ msgstr "" "Pokud sloupec ukládá více hodnot, přidá zvolené hodnoty do jedné existující, " "místo toho, aby se nahradila." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "Chyba: Musíte zadat název pole, id a hodnotu" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20973,20 +21249,27 @@ msgstr "" " Seznam dostupných vlastních sloupců. Zobrazí popisky sloupců a ids.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "Zobrazit podrobnosti pro každý sloupec." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " -msgstr "Ztratíte všechna data ve sloupci: %r. Jste si jisti (a/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " +msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "a" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20996,15 +21279,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "Bez dotazu na potvrzení" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "Chyba: Musíte zadat šířku sloupce" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -21017,41 +21300,41 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "Chyba: Musíte zadat akci (přidat|odstranit|seznam)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "Název:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "Hledaný řetězec:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "Chyba: Musíte zadat název a hledaný řetězec" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "přidáno" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "Chyba: Musíte zadat název" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "odstraněno" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" "Chyba: Akce %s nebyla uznána, musí být jedna z: (přidat|odstranit|seznam)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -21065,13 +21348,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -21081,12 +21364,12 @@ msgstr "" "%prog check_library [options]\n" "Provede nějaké kontroly na filesystému, kde je knihovna. Reporty jsou {0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "Výstup ve formátu CSV" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" @@ -21094,7 +21377,7 @@ msgstr "" "Čárkou oddělený seznam reportů.\n" "Výchozí: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" @@ -21102,7 +21385,7 @@ msgstr "" "Čárkami oddělený seznam ignorovaných přípon.\n" "Výchozí: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" @@ -21110,11 +21393,11 @@ msgstr "" "Čárkami oddělený seznam ignorovaných jmen.\n" "Výchozí: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "Neznámé hlášení o kontrole" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -21129,19 +21412,19 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" "Opravdu proveď obnovu. Příkaz nebude spuštěn, dokud je volba zvolena." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "Musíte poskytnout %s volbu pro spuštění obnovy" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -21153,7 +21436,7 @@ msgstr "" "Vytvoří report kategorií informací v databázi.\n" "Informace je ekvivalentem toho, co se zobrazuje v panelu štítků.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" @@ -21161,7 +21444,7 @@ msgstr "" "Výstupem je jen počet položek v kategorii namísto počtu položek v rámci " "kategorie." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." @@ -21169,7 +21452,7 @@ msgstr "" "Znak, který se umístí kolem hodnoty kategorie v CSV módu. Výchozí jsou " "uvozovky (\")." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" @@ -21177,15 +21460,15 @@ msgstr "" "Čárkami oddělený seznam kategorií hledaných jmen.\n" "Výchozí: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "Řetězec použitý k oddělení polí v režimu CSV. Výchozí je čárka." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "POLOŽKY KATEGORIE" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -21224,17 +21507,17 @@ msgstr "vytváření uživatelských sloupců " msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "

Migruji starou databázi do knihovy ebooků v %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "Kopírování %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "Zhutňování databáze" @@ -22540,194 +22823,198 @@ msgid "English (Pakistan)" msgstr "angličtina (Pákistán)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 +msgid "English (Poland)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 msgid "English (Croatia)" msgstr "English (Chorvatština)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 msgid "English (Hong Kong)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 msgid "English (Hungary)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 msgid "English (Indonesia)" msgstr "English (Indonésština)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 msgid "English (Israel)" msgstr "angičtina (Izrael)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 msgid "English (Russia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 msgid "English (Singapore)" msgstr "angličtina (Singapur)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 msgid "English (Yemen)" msgstr "angličtina (Jemen)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 msgid "English (Ireland)" msgstr "angličtina (Irsko)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 msgid "English (China)" msgstr "angličtina (Čína)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 msgid "English (South Africa)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 msgid "Spanish (Paraguay)" msgstr "španělština (Paraguay)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 msgid "Spanish (Uruguay)" msgstr "Španělština (Uruguay)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 msgid "Spanish (Argentina)" msgstr "Španělština (Argentina)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 msgid "Spanish (Costa Rica)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 msgid "Spanish (Mexico)" msgstr "Španělština (Mexiko)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 msgid "Spanish (Cuba)" msgstr "Španělština (Kuba)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 msgid "Spanish (Chile)" msgstr "španělština (Chile)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 msgid "Spanish (Ecuador)" msgstr "Španělština (Ekvádor)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 msgid "Spanish (Honduras)" msgstr "Španělština (Honduras)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 msgid "Spanish (Venezuela)" msgstr "Španělština (Venezuela)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 msgid "Spanish (Bolivia)" msgstr "Španělština (Bolívie)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 msgid "Spanish (Nicaragua)" msgstr "Španělština (Nikaragua)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 msgid "Spanish (Colombia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 msgid "German (AT)" msgstr "němčina (AT)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 msgid "French (BE)" msgstr "francouzština (BE)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 msgid "Dutch (NL)" msgstr "holandština (NL)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "holandština (BE)" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -22803,7 +23090,7 @@ msgid "Unknown feed" msgstr "Neznámý zdroj" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "Článek bez názvu" @@ -22811,111 +23098,111 @@ msgstr "Článek bez názvu" msgid "Unknown News Source" msgstr "Neznámý zdroj zpráv" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "\"%s\" zdroj musí obsahovat jméno a heslo." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "Stahování dokončeno" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "Nepodařilo se stáhnout následující články:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "Nepodařilo se stáhnout části následujících článků:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr " od " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "\tChybné odkazy:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "Stahuji zdroje..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "Získány zdroje z úvodní strany" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "Pokouším se stáhnout obálku..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "Generování tiráže..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "Startuji download [%d vláken]" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "Stáhnout zdroje z %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "Nemohu stáhnout obálku: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "Stahování obálky z %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "Obrázek z tiráže stažen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "Nepojmenovaný článek" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "Článek stažen: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "Stažení článku selhalo: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "Stahuji feed" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." @@ -22923,7 +23210,7 @@ msgstr "" "Přihlášení selhalo, zkontrolujte své uživatelské jméno a heslo pro calibre " "Novinovou službu." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -22970,7 +23257,7 @@ msgstr "Sekce" msgid "Articles" msgstr "Články" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" @@ -22980,20 +23267,20 @@ msgstr "" "\n" "Kde URL je například http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" "Základní adresář, do kterého bude URL uloženo. Standardně je to %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "Časový limit čekání na odezvu ze serveru. Standardně: %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " @@ -23002,7 +23289,7 @@ msgstr "" "Maximání hloubka rekurze, t.j. počet úrovní odkazů, které se mají procházet. " "Standardně %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tagách. Standardně %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "Minimální interval stahování v sekundách. Standatně %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -23026,7 +23313,7 @@ msgstr "" "Kódování znaků použité na webových stránkách, které chcete stáhnout. " "Vevýchozím nastavení se program pokusí rozeznat kódování automaticky." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -23037,7 +23324,7 @@ msgstr "" "se shodují minimálně s jedním výrazem. Standardně budou následovány všechny " "odkazy." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -23045,7 +23332,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "Nestahovat kaskádové styly." @@ -23053,10 +23340,6 @@ msgstr "Nestahovat kaskádové styly." msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "Uložit" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/cy.po b/src/calibre/translations/cy.po index 22081aed35..b2b26756c5 100644 --- a/src/calibre/translations/cy.po +++ b/src/calibre/translations/cy.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2012-02-26 20:21+0000\n" "Last-Translator: Rachael Munns \n" "Language-Team: Welsh \n" @@ -16,19 +16,22 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? " "2 : 3;\n" -"X-Launchpad-Export-Date: 2013-03-16 04:51+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:24+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Dim yn gwneud dim byd" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -51,8 +54,8 @@ msgstr "Dim yn gwneud dim byd" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -82,9 +85,9 @@ msgstr "Dim yn gwneud dim byd" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -115,7 +118,7 @@ msgstr "Dim yn gwneud dim byd" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -152,7 +155,7 @@ msgstr "Dim yn gwneud dim byd" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -179,19 +182,19 @@ msgstr "Dim yn gwneud dim byd" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -948,8 +951,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -960,7 +963,7 @@ msgid "Path to library too long. Must be less than %d characters." msgstr "" "Rhy hir ydy'r llwybr i'r llyfrgell. Mae rhaid fod yn llai na %d cymeriad." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -975,25 +978,25 @@ msgstr "Iawn" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Sail" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Cerdyn A" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Cerdyn B" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1012,7 +1015,7 @@ msgstr "Cerdyn B" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Newyddion" @@ -1248,8 +1251,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Catalog" @@ -1925,7 +1928,7 @@ msgid "Communicate with the Ex124G" msgstr "Cyfathrebwch gyda'r Ex124G" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2548,7 +2551,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2574,29 +2577,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2604,37 +2607,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2817,13 +2820,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2831,7 +2834,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4164,20 +4167,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4198,7 +4204,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4339,52 +4345,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4500,9 +4506,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4612,7 +4618,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4751,22 +4757,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5305,6 +5318,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5588,12 +5616,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5698,7 +5725,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6333,14 +6360,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7081,7 +7111,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7149,18 +7179,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7215,7 +7234,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7236,7 +7255,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7260,7 +7279,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7279,7 +7298,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7303,7 +7322,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7380,78 +7399,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7459,77 +7506,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7537,102 +7635,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8968,7 +9067,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9035,6 +9134,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9090,30 +9190,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9297,11 +9415,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9919,6 +10037,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9927,16 +10055,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10434,6 +10562,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10797,10 +10929,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11021,11 +11149,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11518,7 +11641,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12919,46 +13042,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13229,14 +13352,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13426,57 +13541,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13484,60 +13599,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13966,11 +14081,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14705,28 +14815,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15251,68 +15361,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17501,11 +17611,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17516,59 +17638,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17576,113 +17803,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17692,11 +17940,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17705,56 +17953,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19138,7 +19386,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19150,7 +19398,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19159,7 +19407,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19168,7 +19416,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19177,7 +19425,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19187,7 +19435,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19196,7 +19444,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19205,7 +19453,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19383,12 +19631,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19397,7 +19654,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19420,7 +19691,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19429,12 +19700,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19468,103 +19739,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19661,7 +19932,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19864,17 +20135,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19885,28 +20162,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19917,13 +20194,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19943,11 +20220,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19958,30 +20235,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -19993,17 +20270,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20012,20 +20289,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20035,15 +20319,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20056,40 +20340,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20103,13 +20387,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20117,34 +20401,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20159,18 +20443,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20178,33 +20462,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20241,17 +20525,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21524,194 +21808,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21787,7 +22075,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21795,117 +22083,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21950,60 +22238,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22011,7 +22299,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22019,10 +22307,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/da.po b/src/calibre/translations/da.po index 0f9ea4dcea..84c7486168 100644 --- a/src/calibre/translations/da.po +++ b/src/calibre/translations/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2013-01-03 19:44+0000\n" "Last-Translator: Jens Holm \n" "Language-Team: Danish \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:37+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:10+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Gør absolut ingenting" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Gør absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Gør absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Gør absolut ingenting" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Gør absolut ingenting" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Gør absolut ingenting" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -986,8 +989,8 @@ msgstr "Aktivér det angivne udvidelsesmodul" msgid "Disable the named plugin" msgstr "Deaktivér det angivne udvidelsesmodul" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -997,7 +1000,7 @@ msgstr "Deaktivér det angivne udvidelsesmodul" msgid "Path to library too long. Must be less than %d characters." msgstr "Sti til bibliotek for lang. Skal være kortere end %d tegn." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1012,25 +1015,25 @@ msgstr "Ja" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Main/hjem/primær" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Kort A" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Kort B" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1049,7 +1052,7 @@ msgstr "Kort B" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Nyheder" @@ -1314,8 +1317,8 @@ msgstr "" "Klik 'Show Details' for en liste." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Katalog" @@ -2012,7 +2015,7 @@ msgid "Communicate with the Ex124G" msgstr "Kommunikerer nu med Ex124G" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2650,7 +2653,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2698,29 +2701,29 @@ msgstr "" "\n" "For fuld dokumentation af konverteringssystemet se\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "INPUT VALGMULIGHEDER" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "OUTPUT VALGMULIGHEDER" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "Valgmuligheder til styring af behandlingen af input %s filen" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "Valgmuligheder til styring af behandlingen af output %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "Valgmuligheder til styring af udseendet af output" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2728,16 +2731,16 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "Styring af auto-detektion af dokumentets struktur." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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 " @@ -2747,21 +2750,21 @@ msgstr "" "udgangspunkt vil en evt. indholdsfortegnelse i kildefilen blive foretrukket, " "fremfor en selvgenereret." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "Muligheder for at angive metadata i output" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "Muligheder der kan hjælpe med konverteringsfejlfinding" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "Output gemt til" @@ -2987,7 +2990,7 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -2995,7 +2998,7 @@ msgstr "" "Traversér henvisninger i HTML-filer bredde-først. Normalt traverseres de " "dybde-først." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -3006,7 +3009,7 @@ msgstr "" "ikke-negativt. 0 betyder at ingen henvisninger i rod HTML-filen følges. " "Standardværdi er %default." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4478,20 +4481,23 @@ msgstr "Kommentarer" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4512,7 +4518,7 @@ msgstr "Mærker" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4668,52 +4674,52 @@ msgstr "" msgid "Cover" msgstr "Omslag" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "Hent metadata og omslag fra Amazon" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "US" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "Frankrig" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "Tyskland" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "UK" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "Italien" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "Amazon website som skal anvendes:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "Metadata fra Amazon vil blive hentet fra dette lands Amazon website." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "Amazon timede out. Prøv igen senere." @@ -4833,9 +4839,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4945,7 +4951,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -5084,22 +5090,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5647,6 +5660,21 @@ msgstr "Eksport katalog mappe" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "Adgang nægtet" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "Kunne ikke åbne %s. Bliver den anvendt af et andet program?" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5932,12 +5960,11 @@ msgstr "Kan ikke konvertere" msgid "Starting conversion of %d book(s)" msgstr "Starter konvertering af %d bog/bøger" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "Tom output-fil, sandsynligvis gik konverteringsprocessen ned" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -6042,7 +6069,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6688,14 +6715,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7456,7 +7486,7 @@ msgstr "" "importeret ind i calibres bibliotek" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7527,20 +7557,7 @@ msgid "" msgstr "" "&Multiple bøger per mappe, formoder enhver e-bog fil er en distinkt bog" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "Dubletter fundet!" - -#: /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?" -msgstr "" -"Bøger med den samme titel som den følgende eksisterer allerede i databasen. " -"Tilføj dem alligevel?" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7595,7 +7612,7 @@ msgid "Path" msgstr "Sti" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7616,7 +7633,7 @@ msgstr "BibTeX valg" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7640,7 +7657,7 @@ msgstr "Muligheder angivet til" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7659,7 +7676,7 @@ msgstr "output" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7683,7 +7700,7 @@ msgstr "output" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7760,78 +7777,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "CSV/XML valgmuligheder" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "E-bogsmuligheder" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7839,77 +7884,128 @@ msgstr "" msgid "Name" msgstr "Navn" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "Slet" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "&Beskrivelser" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7917,102 +8013,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "Andre valgmuligheder" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "&Før" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "&Efter" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -9371,7 +9468,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "Konvertér" @@ -9441,6 +9538,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "Ugyldig XPath" @@ -9498,30 +9596,48 @@ msgstr "Niveau &2 indholdsfortegnelse (XPath-udtryk):" msgid "Level &3 TOC (XPath expression):" msgstr "Niveau &3 indholdsfortegnelse (XPath-udtryk):" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "Tilføj ikke &detekterede kapitler til indholdsfortegnelsen" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "Antal &henvisninger at tilføje til indholdsfortegnelsen" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "Kapitel&grænse" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "&Tving autogenereret indholdsfortegnelse" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "Tilføj ikke &detekterede kapitler til indholdsfortegnelsen" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "Antal &henvisninger at tilføje til indholdsfortegnelsen" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "Indholdsfortegnelses&filter:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "Kapitel&grænse" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "TXT-input" @@ -9709,11 +9825,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "Browse efter omslag" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "Omslag browser kunne ikke loades" @@ -10346,6 +10462,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "Tilpas &omslag til synsfelt" @@ -10354,16 +10480,16 @@ msgstr "Tilpas &omslag til synsfelt" msgid "My Books" msgstr "Mine bøger" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "Generér katalog" @@ -10871,6 +10997,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "Dubletter fundet!" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -11259,10 +11389,6 @@ msgstr "Gem søg/erstat" msgid "Search/replace name:" msgstr "Søg/erstat navn:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11500,11 +11626,6 @@ msgstr "Gem aktuel søg/erstat" msgid "Sa&ve" msgstr "&Gem" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "Slet" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "Søg &felt:" @@ -12007,7 +12128,7 @@ msgstr "Afbryder..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Forfattere" @@ -13434,46 +13555,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "omslags-browser" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "Shift+Alt+B" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "Mærke-browser" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "Shift+Alt+T" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "version" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "skabt af Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " msgstr "Forbundet " -#: /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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "bog detaljer" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "Shift+Alt+D" @@ -13746,14 +13867,6 @@ msgstr "Opslaget/søgenavn er \"{0}\"" msgid "This book's UUID is \"{0}\"" msgstr "Denne bogs UUID er \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "Adgang nægtet" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13945,57 +14058,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "Calibre bibliotek" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "Vælg en placering til dit calibre e-bogsbibliotek" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "Biblioteksoprettelse fejlede" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "Oprettelse af calibre bibliotek fejlede ved: %r." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "Vlæg en placering til dit nye calibre e-bogsbibliotek" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "Initialiserer brugergrænseflade..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "Udbedring fejlede" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "Databaseudbedring fejlede. Starter med et nyt tomt bibliotek." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "Uegnet databaseplacering" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "Uegnet databaseplacering %r. calibre vil nu slutte." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "Ødelagt database" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -14003,61 +14116,61 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" "Uegnet databaseplacering %r. Vil starte med en nyt tomt calibre bibliotek" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "Starter %s: Henter bøger..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "Hvis du ikke er sikker på den kører" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "kører muligvis i systembakken, i" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "øvre højre område af skærmen." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "nedre højre område af skærmen." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "prøv at genstarte din computer" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "prøv at slette filen" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "Kan ikke starte " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "%s kører allerede." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -14493,11 +14606,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "Kunne ikke åbne %s. Bliver den anvendt af et andet program?" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -15248,28 +15356,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "Ingen regel er valgt" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "Ingen regel valgt for %s." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "Du må vælge en kolonne for at slette den" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "Den valgte kolonne er en tilpasset kolonne" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "Vil du virkelig slette kolonne %s og alle dets data?" @@ -15819,68 +15927,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "Smal" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "Bred" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "Fra" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "Lille" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "Stor" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "Medium" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "Altid" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "Aldrig" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "Deaktiveret" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "Partitioneret" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -18134,11 +18242,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -18149,59 +18269,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -18209,113 +18434,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -18325,11 +18571,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -18338,56 +18584,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "Kunne ikke konvertere nogle bøger" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "Lægger bøger i kø for klyngekonvertering" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "Lægger i kø " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "Henter nyheder fra " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "Konverterer eksisterende" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19817,7 +20063,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19829,7 +20075,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19842,7 +20088,7 @@ msgstr "" "Standard: '%default'\n" "Anvendes til: BIBTEX output-format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19855,7 +20101,7 @@ msgstr "" "Standard: '%default'\n" "Anvendes til: BIBTEX output-format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19864,7 +20110,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19874,7 +20120,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19887,7 +20133,7 @@ msgstr "" "Standard: '%default'\n" "Anvendes til: BIBTEX output-format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19900,7 +20146,7 @@ msgstr "" "Standard: '%default'\n" "Anvendes til: BIBTEX output-format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -20082,12 +20328,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -20096,7 +20351,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -20119,7 +20388,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -20128,12 +20397,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -20167,103 +20436,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -20376,7 +20645,7 @@ msgstr "" "brugermanualen. Standard er ingen filtrering." #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -20610,17 +20879,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -20637,28 +20912,28 @@ msgstr "" "Eksport operationen gemmer alle bogens formater, dets omslag og metadata (i\n" "en opf-fil). Du kan få id numbers fra list-kommandoen.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "Eksporter alle bøger i databasen, listen over id'er ignoreres." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "Eksportér bøger til den angivne mappe. Standardmappen er" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "Eksportér alle bøger til en enkel mappe" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "Specificering af denne switch vil slå denne opførsel fra." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "Du skal specificere nogle ids eller %s valget" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -20675,7 +20950,7 @@ msgstr "" "indeholde mellemrum eller koloner. name er det menneskevenlige kolonnenavn.\n" "datatype er en af: {0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." @@ -20683,7 +20958,7 @@ msgstr "" "Denne kolonne gemmer mærker ligesom data (f.eks. multiple kommaseparerede " "værdier). Giver kun mening hvis datatypen er tekst." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -20703,11 +20978,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "Du skal specificere label, name og datatype" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -20725,7 +21000,7 @@ msgstr "" " Options styrer hvordan indgange vises i det genererede katalog-ouput.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" @@ -20735,7 +21010,7 @@ msgstr "" "Hvis erklæret, --search bliver ignoreret.\n" "Standard: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" @@ -20745,16 +21020,16 @@ msgstr "" "søgeforespørgsel, venligst se søgerelateret dokumentation i brugermanualen.\n" "Standard: Ingen filtrering" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "Vis detaljeret output-information. Anvendeligt ved fejlfinding" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "Fejl: Du skal specificere en katalog output-fil" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -20776,7 +21051,7 @@ msgstr "" " -kommandoen.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." @@ -20784,11 +21059,11 @@ msgstr "" "Hvis kolonnen gemmer multiple værdier, tilføjes de specificerede værdier til " "de eksisterende, istedet for at overskrive dem." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "Fejl: Du skal specificere et feltnavn, id og value" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20803,20 +21078,27 @@ msgstr "" "ids.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "Vis detaljer for hver kolonner." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " -msgstr "Du vil miste alle data i kolonnen: %r. Er du sikker (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " +msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "y" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20833,15 +21115,15 @@ msgstr "" " kolonner med custom_columns-kommandoen.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "Spørger/spørg ikke efter bekræftelse" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "Fejl: Du skal specificere en kolonne label" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20864,40 +21146,40 @@ msgstr "" " vil den blive overskrevet.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "Fejl: Du skal angive en aktion (tilføj|fjern|liste)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "Navn:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "Søgestreng:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "Fejl: Du skal angive et navn og en søgestreng" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "tilføjet" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "Fejl: Du skal angive et navn" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "fjernet" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "Fejl: Aktion %s ikke genkendt, skal være en af: (tilføj|fjern|liste)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20911,13 +21193,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20929,12 +21211,12 @@ msgstr "" "Udføre nogle check på filsystemet som repræsenterer et bibliotek. Rapporter " "er {0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "Output i CSV" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" @@ -20942,7 +21224,7 @@ msgstr "" "Komma-separeret liste af rapporter.\n" "Standard: Alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" @@ -20950,7 +21232,7 @@ msgstr "" "Komma-separeret liste af fil-extensions som ignoreres.\n" "Standard: Alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" @@ -20958,11 +21240,11 @@ msgstr "" "Komma-separeret liste af navne som ignoreres.\n" "Standard: Alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "Ukendt rapport check" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20991,7 +21273,7 @@ msgstr "" "efter hvad der er fundet i OPF-filerne.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." @@ -20999,12 +21281,12 @@ msgstr "" "Skal opretningen virkelig udføres. Kommanden vil ikke køre, medmindre denne " "mulighed bliver angivet." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -21016,7 +21298,7 @@ msgstr "" "Laver en rapport af kategoriinformationen i databasen.\n" "Informationen er ækvivalenten af hvad som vises i mærkeruden.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" @@ -21024,7 +21306,7 @@ msgstr "" "Output kun antallet af emner i en kategori, istedet for antallet per emne " "indenfor kategorien" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." @@ -21032,7 +21314,7 @@ msgstr "" "Tegn til at sætte omkring kategoriværdien i CSV-tilstand. Standard er " "gåseøjne (\")." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" @@ -21040,16 +21322,16 @@ msgstr "" "Kommasepareret liste af kategori opslagsnavne.\n" "Standard: alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" "Streng anvendt til at separere felter i CSV-tilstand. Standard er et komma." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "KATEGORI EMNER" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -21096,17 +21378,17 @@ msgstr "opret tilpasset søjle " msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "

Flytter gammel database til e-bogsbibliotek i %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "Kopierer %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "Komprimerer database" @@ -22420,194 +22702,198 @@ msgid "English (Pakistan)" msgstr "Engelsk (Pakistan)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 +msgid "English (Poland)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 msgid "English (Croatia)" msgstr "Engelsk (Kroatien)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 msgid "English (Hong Kong)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 msgid "English (Hungary)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 msgid "English (Indonesia)" msgstr "Engelsk (Indonesien)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 msgid "English (Israel)" msgstr "Engelsk (Israel)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 msgid "English (Russia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 msgid "English (Singapore)" msgstr "Engelsk (Singapore)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 msgid "English (Yemen)" msgstr "Engelsk (Yemen)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 msgid "English (Ireland)" msgstr "Engelsk (Irland)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 msgid "English (China)" msgstr "Engelsk (Kina)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 msgid "English (South Africa)" msgstr "Engelsk (Sydafrika)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 msgid "Spanish (Paraguay)" msgstr "Spansk (Paraguay)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 msgid "Spanish (Uruguay)" msgstr "Spansk (Uruguay)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 msgid "Spanish (Argentina)" msgstr "Spansk (Argentina)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 msgid "Spanish (Costa Rica)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 msgid "Spanish (Mexico)" msgstr "Spansk (Mexico)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 msgid "Spanish (Cuba)" msgstr "Spanisk (Cuba)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 msgid "Spanish (Chile)" msgstr "Spansk (Chile)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 msgid "Spanish (Ecuador)" msgstr "Spansk (Ecuador)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 msgid "Spanish (Honduras)" msgstr "Spansk (Honduras)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 msgid "Spanish (Venezuela)" msgstr "Spansk (Venezuela)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 msgid "Spanish (Bolivia)" msgstr "Spansk (Bolivia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 msgid "Spanish (Nicaragua)" msgstr "Spansk (Nicaragua)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 msgid "Spanish (Colombia)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 msgid "German (AT)" msgstr "Tysk (AT)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 msgid "French (BE)" msgstr "Fransk (BE)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 msgid "Dutch (NL)" msgstr "Hollansk (NL)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "Hollansk (BE)" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -22683,7 +22969,7 @@ msgid "Unknown feed" msgstr "Ukendt feed" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "Unavngiven artikel" @@ -22691,111 +22977,111 @@ msgstr "Unavngiven artikel" msgid "Unknown News Source" msgstr "Ukendt nyhedskilde" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "\"%s\"-opskriften kræver et brugernavn og adgangskode." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "Download afsluttet" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "Kunne ikke downloade følgende artikler:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "Kunne ikke downloade dele af følgende artikler:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr " fra " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "\tMislykkede henvisninger:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "Henter feeds..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "Fik feeds fra indekssiden" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "Prøver at downloade omslag..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "Genererer masthead..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "Starter download [%d tråd(e)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "Feeds er hentet til %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "Kunne ikke hente omslaget: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "Downloader omslag fra %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "Masthead billede downloadet" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "Unavngiven artikel" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "Artikel hentet: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "Hentning af artikel mislykkedes: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "Henter feed" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." @@ -22803,7 +23089,7 @@ msgstr "" "Login mislykkedes, check dit brugernavn og adgangskode til calibre " "tidsskriftsservice." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -22851,7 +23137,7 @@ msgstr "Sektioner" msgid "Articles" msgstr "Artikler" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" @@ -22861,12 +23147,12 @@ msgstr "" "\n" "Hvor URL er f.eks. http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "Mappe hvortil URLen gemmes. Standardværdien er %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " @@ -22874,7 +23160,7 @@ msgid "" msgstr "" "Timeout i sekunder at vente, for et svar fra serveren. Standard: %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " @@ -22883,7 +23169,7 @@ msgstr "" "Maksimalt rekursiv dybde til f.eks. forfølgelse af henvisninger. " "Standardværdi %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from " "tags. Standardværdien er %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " @@ -22900,7 +23186,7 @@ msgid "" msgstr "" "Minimalt interval i sekunder mellem hentninger, Standardværdien er %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -22908,7 +23194,7 @@ msgstr "" "Tegnsættet for hjemmeside sites, du prøver at hente. Udgangspunktet er at " "forsøge på at gætte tegnsættet." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -22919,7 +23205,7 @@ msgstr "" "fulgt, bare de passer på ét af udtrykkene. Som udgangspunkt følges alle " "henvisninger." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22927,7 +23213,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "Download ikke CSS-stilark" @@ -22935,10 +23221,6 @@ msgstr "Download ikke CSS-stilark" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/de.po b/src/calibre/translations/de.po index 4c788d87b4..264df0aecd 100644 --- a/src/calibre/translations/de.po +++ b/src/calibre/translations/de.po @@ -7,16 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" -"PO-Revision-Date: 2013-03-15 09:52+0000\n" -"Last-Translator: Hendrik Knackstedt \n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" +"PO-Revision-Date: 2013-04-02 20:16+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: American English \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: 2013-03-16 04:39+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-04-03 05:26+0000\n" +"X-Generator: Launchpad (build 16546)\n" "X-Poedit-Bookmarks: 3327,-1,-1,-1,-1,-1,-1,-1,-1,-1\n" "Generated-By: pygettext.py 1.5\n" @@ -25,11 +25,14 @@ msgid "Does absolutely nothing" msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -52,8 +55,8 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -83,9 +86,9 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -116,7 +119,7 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -153,7 +156,7 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -180,19 +183,19 @@ msgstr "Macht absolut gar nichts" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -1010,8 +1013,8 @@ msgstr "Gewähltes Plugin einschalten" msgid "Disable the named plugin" msgstr "Gewähltes Plugin ausschalten" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -1022,7 +1025,7 @@ msgid "Path to library too long. Must be less than %d characters." msgstr "" "Der Pfad zur Datenbank ist zu lang. Er muss kürzer als %d Zeichen sein." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1037,25 +1040,25 @@ msgstr "Ja" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)sDurchschnittliche Bewertung ist %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Haupt" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Karte A" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Karte B" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1074,7 +1077,7 @@ msgstr "Karte B" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Nachrichten" @@ -1355,8 +1358,8 @@ msgstr "" "Klicken Sie 'Details anzeigen' für eine Liste." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Katalog" @@ -2126,8 +2129,8 @@ msgid "Communicate with the Ex124G" msgstr "Kommuniziere mit dem Ex124G" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" -msgstr "Mit dem WayteQ Reader kommunizieren" +msgid "Communicate with the WayteQ and SPC Dickens Readers" +msgstr "Mit den Lesegeräten von WayteQ und SPC Dickens verbinden" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 msgid "MTP Device" @@ -2846,7 +2849,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2896,29 +2899,29 @@ msgstr "" "\n" "Eine vollständige Dokumentation des Konvertierungssystems finden Sie unter\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "EINGABE-EINSTELLUNGEN" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "AUSGABE-EINSTELLUNGEN" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "Einstellungen zur Steuerung der Verarbeitung der Eingabedatei %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "Einstellungen zur Steuerung der Verarbeitung der Ausgabe %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "Einstellungen zur Steuerung des Layouts der Ausgabe" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2929,18 +2932,18 @@ msgstr "" "Muster. Standardmäßig deaktiviert. Nutzen Sie %(en)s zur Aktivierung. " "Individuelle Aktionen können mit der Option %(dis)s deaktiviert werden." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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 "" "Ändere Text und Struktur des Dokument durch Nutzung von benutzerdefinierten " "Mustern." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "Kontrolle der automatischen Erkennung der Dokumentstruktur." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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 " @@ -2950,15 +2953,15 @@ msgstr "" "Voreinstellung wird, falls die Ursprungsdatei ein Inhaltsverzeichnis hat, " "dieses verwendet anstatt des automatisch erstellten." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "Einstellungen zum Festlegen von Metadaten in der Ausgabe" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "Einstellungen zur Hilfe mit der Fehlerdiagnose bei der Konvertierung" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" @@ -2967,7 +2970,7 @@ msgstr "" "einer vorinstallierten Quelle ein eBook wie folgt erstellen: ebook-convert " "\"Recipe Name.recipe\" output.epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "Ausgabe gespeichert in" @@ -3218,7 +3221,7 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "für eine vollständige Liste mit Beschreibung." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -3226,7 +3229,7 @@ msgstr "" "Links in HTML-Dateien in der Breite durchlaufen. Normalerweise werden Links " "in die Tiefe durchlaufen." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -3237,7 +3240,7 @@ msgstr "" "Darf nicht negativ sein. 0 gibt an, dass keine Links in der ursprünglichen " "HTML-Datei verfolgt werden. Voreinstellung ist %default." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4970,20 +4973,23 @@ msgstr "Bemerkungen" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -5004,7 +5010,7 @@ msgstr "Schlagworte" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -5174,52 +5180,52 @@ msgstr "" msgid "Cover" msgstr "Coverbild" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "Lädt Metadaten und Coverbild von Amazon" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "US" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "Frankreich" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "Deutschland" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "UK" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "Italien" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "Japan" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "Spanien" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "Brasilien" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "Folgende Amazon-Webseite benutzen:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "Metadaten werden von der dem Land zugehörigen Amazon Website geholt." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" "Zeitüberschreitung beim Abruf von Metadaten bei Amazon. Versuche es später " @@ -5361,9 +5367,9 @@ msgstr "Keine Details verfügbar" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -5495,7 +5501,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -5642,22 +5648,29 @@ msgstr "Sie müssen mindestens eine durchzuführende Aktion festlegen" msgid "Smartened punctuation in: %s" msgstr "Intelligente Zeichensetzung in: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "Eine Datei mit Namen %s existiert nicht" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "Es existiert keine HTML-Datei mit dem Namen %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "Der Anker %(a)s existiert in der Datei %(f)s nicht" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "(Unbenannt)" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -6244,6 +6257,23 @@ msgstr "Katalog-Verzeichnis exportieren" msgid "Select destination for %(title)s.%(fmt)s" msgstr "Wählen Sie das Ziel für %(title)s.%(fmt)s" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "Zugriff verweigert" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" +"%s konnte nicht geöffnet werden. Wird es von einem anderen Programm " +"verwendet?" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -6555,12 +6585,11 @@ msgstr "Konvertierung nicht möglich" msgid "Starting conversion of %d book(s)" msgstr "Konvertierung von %d Büchern wird gestartet" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "Leere Ausgabedatei, eventuell ist der Umwandlungsprozess abgestürzt" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "%(title)s von %(author)s" @@ -6672,7 +6701,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -7383,14 +7412,17 @@ msgid "You must select at least one action before saving" msgstr "Sie müssen mindestens eine Aktion auswählen, bevor Sie speichern" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "Namen auswählen" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "Wählen Sie einen Namen für diese Einstellungen" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "Gespeicherte Einstellungen entfernen" @@ -8211,7 +8243,7 @@ msgstr "" "Import in die Bibliothek von Calibre abgesucht" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -8283,20 +8315,7 @@ msgstr "" "&Mehrere Bücher pro Verzeichnis, wobei jede eBook-Datei ein anderes Buch " "darstellt" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "Duplikate gefunden!" - -#: /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?" -msgstr "" -"Es gibt schon Bücher mit dem selben Titel wie die folgenden in der " -"Datenbank. Trotzdem hinzufügen?" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "%(num)d Buch/Bücher automatisch von %(src)s hinzugefügt" @@ -8351,7 +8370,7 @@ msgid "Path" msgstr "Pfad" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "Coverbild-Größe: %(width)d x %(height)d" @@ -8372,7 +8391,7 @@ msgstr "BibTeX Einstellungen" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -8396,7 +8415,7 @@ msgstr "Einstellungen für" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -8415,7 +8434,7 @@ msgstr "Ausgabe" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -8439,7 +8458,7 @@ msgstr "Ausgabe" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -8523,80 +8542,112 @@ msgstr "" msgid "CSV/XML Options" msgstr "CSV/XML Einstellungen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "eBook Einstellungen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "Kataloge" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "Buch lesen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "Wunschlisteneintrag" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "jedes Datum" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "jeder Wert" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "unbestimmt" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "Kein Genre wird ausgeschlossen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "regex Fehler: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "Alle Genres werden ausgeschlossen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "Katalogvoreinstellungen löschen" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" +"Die ausgewählten gespeicherten Katalogvoreinstellungen werden gelöscht. Sind " +"Sie sicher?" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "Katalogvoreinstellungen speichern" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "Voreinstellungsname:" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "Sie müssen einen Namen vergeben." + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" +"Die gespeicherten Voreinstellungen sind bereits vorhanden und werden " +"überschrieben. Sind Sie sicher?" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "Sind Sie sicher, dass Sie '%s' löschen wollen?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" "Sind Sie sich sicher, dass Sie die Regeln #%(first)d-%(last)d löschen " "möchten?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "Regel löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "Nein" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "Ja" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -8604,57 +8655,109 @@ msgstr "Ja" msgid "Name" msgstr "Name" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "Feld" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "Wert" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "Präfix" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "Voreinstellungen" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "Katalogvoreinstellungen zum Laden auswählen" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "Aktuelle Katalogeinstellungen als Voreinstellungen speichern" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "Speichern" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "Aktuelle Voreinstellungen löschen" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "Löschen" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "Aktiviert Bereiche werden in der generierten Katalog aufgenommen." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "Eingeschlossene Abschnitte" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "Bücherliste, sortiert nach Autoren" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "&Autoren" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "Bücherliste, sortiert nach Titel" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "&Titel" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "Buchreihenliste, sortiert nach Reihen" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "&Serien" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "Bücherliste, sortiert nach Genre" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "&Genres" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" -msgstr "Feld mit Kategorieinformation" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" +msgstr "Feld, das Genres enthält" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "Bücherliste, sortiert nach Hinzufügedatum zu Calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "Zuletzt hinzugefügt" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" +"Individuelle Beschreibung der Bücher mit Buchdeckblatt, sortiert nach Autor" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "Beschreibungen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." @@ -8662,11 +8765,11 @@ msgstr "" "Die erste zutreffende Präfixregel wendet einen Präfix auf Bücherlisten im " "erzeugten Katalog an." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "Präfixe" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " @@ -8674,11 +8777,11 @@ msgstr "" "Bücher, die einem der Ausschlusskriterien entsprechen, wenden von der " "Katalogerstellung ausgeschlossen. " -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "Ausgeschlossene Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -8691,108 +8794,111 @@ msgstr "" "]\\+ schließt Tags der Form [tag] und '+', das\n" "Standardtag für gelesene Bücher, aus." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "Ausgeschlossene Genres" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "Zu ignorierende Kategorien (regex):" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "Auf Voreinstellungen zurücksetzen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "Ergebnis von regex:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "Tags welche nicht als Genres verwendet werden." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "Weitere Optionen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -"Benutzerdefinierte Spalte mit zusätzlichem Inhalt, die mit den Kommentaren " -"zusammengeführt wird." +"Benutzerdefinierte Spalte mit zusätzlichem Inhalt, der mit den " +"Kommentarmetadaten im Beschreibungsabschnitt zusammengeführt werden soll." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." -msgstr "Zusätzlichen Inhalt vor den Metadaten für Kommentare einfügen." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." +msgstr "" +"Zusätzlichen Inhalt vor den Kommentaren im Beschreibungsabschnitt einfügen." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "Vorher" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." -msgstr "Zusätzlichen Inhalt nach den Metadaten für Kommentare einfügen." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." +msgstr "" +"Zusätzlichen Inhalt nach den Kommentaren im Beschreibungsabschnitt einfügen." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "N&achher" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -"Metadaten für Kommentare und zusätzlichen Inhalt mit einer horizontalen " -"Linie trennen." +"Kommentarmetadaten und zusätzlichen Inhalt im Beschreibungsabschnitt durch " +"eine horizontale Linie voneinander trennen." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "Trennzeichen einfügen" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "Mit Kommentaren &zusammenführen:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "Katalog-Coverbild" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "Neues Coverbild generieren" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "Vorhandenes Coverbild verwenden" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "E&xtra Noitz zur Beschreibung:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -"Quelle für den Text der im Abschnitt Beschreibung der benutzerdefinierten " -"Spalte eingefügt werden soll." +"Benutzerdefinierte Spaltenquelle für Text, der in den Beschreibungsabschnitt " +"eingefügt werden soll." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "&Vorlagen Weite:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "Größe der Coverbild-Vorschau im Beschreibungsabschnitt." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr " Inch" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "Autoren Querverweise:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "Bei Büchern mit mehreren Autoren, jeden Autor getrennt auflisten" @@ -10232,7 +10338,7 @@ msgstr "" "Dokument getestet werden. Wenn das Ergebnis zufriedenstellend ist, klicke " "den Hinzufügen Button um ihn zu der Liste der Ausdrücke hinzuzufügen." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "Konvertieren" @@ -10304,6 +10410,7 @@ msgstr "Lesen starten bei (XPath Ausdruck):" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "Ungültiger XPath" @@ -10364,33 +10471,51 @@ msgstr "Ebene &2 Inhaltsverzeichnis (XPath Ausdruck):" msgid "Level &3 TOC (XPath expression):" msgstr "Ebene &3 Inhaltsverzeichnis (XPath Ausdruck):" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "Erkannte Kapitel &nicht zum Inhaltsverzeichnis hinzufügen" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" -"Anzahl der Verknüpfungen, die zum Inha<sverzeichnis hinzugefügt werden" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "Kapitelgrenzwer&t" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" "&Verwendung des automatisch erstellten Inhaltsverzeichnisses erzwingen" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "Erkannte Kapitel &nicht zum Inhaltsverzeichnis hinzufügen" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" +"Anzahl der Verknüpfungen, die zum Inha<sverzeichnis hinzugefügt werden" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "&Filter für Inhaltsverzeichnis:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "Kapitelgrenzwer&t" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" "&Doppelte Verlinkungen erlauben, wenn das Inhaltverzeichnis erstellt wird" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "TXT Input" @@ -10586,11 +10711,11 @@ msgstr "" "erfahren, lesen Sie das XPath Tutorial." -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "Coverbilder durchsuchen" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "Coverbild-Browser konnte nicht geladen werden" @@ -11269,6 +11394,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "E&tiketten für neue Bücher auswäheln:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "Coverbild in Ansicht einpassen" @@ -11277,16 +11412,16 @@ msgstr "Coverbild in Ansicht einpassen" msgid "My Books" msgstr "Meine Bücher" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "Keine Hilfe verfügbar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "Für dieses Ausgabeformat ist keine Hilfe verfügbar." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "Erstelle Katalog" @@ -11914,6 +12049,10 @@ msgstr "" "hier.

Viele aktuelle, DRM- freie Veröffentlichungen sind unter \n" " verfügbar." +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "Duplikate gefunden!" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -12321,10 +12460,6 @@ msgstr "Speichern der Suchen/Ersetzen-Aktion" msgid "Search/replace name:" msgstr "Suchen/Ersetzen-Aktion Name:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "Sie müssen einen Namen vergeben." - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -12569,11 +12704,6 @@ msgstr "Derzeitiges Suchen/Ersetzen- Muster speichern" msgid "Sa&ve" msgstr "&Speichern" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "Löschen" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "Such&feld:" @@ -13108,7 +13238,7 @@ msgstr "Abbruch läuft ..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Autoren" @@ -14671,46 +14801,46 @@ msgstr "Wähle &Schriftfamilie" msgid "Clear the font family" msgstr "Schriftfamilie zurücksetzen" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "Coverbild-Browser" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "Shift+Alt+B" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "Schlagwort-Browser" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "Shift+Alt+T" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "Version" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "erstellt von Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " msgstr "Angeschlossen: " -#: /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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "Buchdetails" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "Shift+Alt+D" @@ -14988,14 +15118,6 @@ msgstr "Der Such-Name ist \"{0}\"" msgid "This book's UUID is \"{0}\"" msgstr "Die UUID dieses Buches ist \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "Zugriff verweigert" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -15195,59 +15317,59 @@ msgstr "" "Der Pfad zu Calibre Portable (%s) ist zu lang. Er muss aus weniger als 59 " "Zeichen bestehen." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "Calibre Bibliothek" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "Wählen Sie einen Ort für Ihre Calibre eBook- Bibliothek" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "Das Erstellen der Bibliothek schlug fehl" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "Erstellen der Calibre Bibliothek schlug fehl in: %r." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "Wählen Sie einen Ort für Ihre neue Calibre eBook Bibliothek" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "Benutzeroberfläche wird gestartet …" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "Reparatur schlug fehl" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" "Die Reparatur der Datenbank schlug fehl. Es erfolgt ein Start mit einer " "neuen, leeren Bibliothek." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "Schlechter Datenbank Standort" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "Ungültiger Datenbank-Ort %r. Calibre beendet sich jetzt." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "Beschädigte Datenbank" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15259,7 +15381,7 @@ msgstr "" "Wiederherstellung wird unter Umständen nicht erfolgreich sein. Wenn Sie Nein " "wählen, wird Calibre eine neue, leere Bibliothek anlegen." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" @@ -15267,54 +15389,54 @@ msgstr "" "Ungültiger Datenbank-Ort %r. Es wird mit einer neuen, leeren Calibre-" "Bibliothek gestartet" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "%s wird gestartet: Bücher werden geladen …" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "Wenn Sie sicher sind, dass es nicht bereits ausgeführt wird" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "kann im Benachrichtigungsbereich gestartet sein, im" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "oberen rechten Bereich des Bildschirms." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "unteren rechten Bereich des Bildschirms." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "Versuchen Sie Ihren Rechner neu zu starten." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "Versuche Sie die Datei zu löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "Start nicht möglich " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "%s läuft bereits." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "Keine laufende Calibre Version gefunden" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "Befehl zum Herunterfahren gesendet, wartet..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "Die laufende Calibre Instanz konnte nicht beendet werden" @@ -15789,13 +15911,6 @@ msgstr "Ändern Sie, wie Calibre Metadaten herunterlädt" msgid " [%(num)d of %(tot)d]" msgstr " [%(num)d von %(tot)d]" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" -"%s konnte nicht geöffnet werden. Wird es von einem anderen Programm " -"verwendet?" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -16653,28 +16768,28 @@ msgstr "" "Sie auf die \"Regel hinzufügen\" Schaltfläche um zu beginnen.

Sie können " "eine vorhandene Relgel ändern indem Sie darauf doppelklicken." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "Keine Regel ausgewählt" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "Keine Regel ausgewählt für %s" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "beseitigen" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "Sie müssen eine Spalte auswählen, um sie zu löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "Die gewählte Spalte ist keine benutzerdefinierte Spalte" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "Wollen Sie wirklich die Spalte %s und Ihre gesamten Daten löschen?" @@ -17298,68 +17413,68 @@ msgstr "" "das Häkchen um das Plugin wieder anzuschalten. Calibre kann keine Geräte " "erkennen, die von ausgeschalteten Plugins verwaltet werden." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "Schmal" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "Breit" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "Calibre Style" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "Standardeinstellung" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "Aus" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "Klein" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "Groß" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "Mittel" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "Immer" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "Falls genug Platz ist" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "Nie" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "Nach Anfangsbuchstaben" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "Ausgeschaltet" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "Gruppiert" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "Spaltenfarbe" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "Spalten Icons" @@ -19933,11 +20048,23 @@ msgstr "Partition" msgid "First letter is usable only when sorting by name" msgstr "Erster Buchstabe kann nur verwendet werden beim Sortieren nach Name" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "Wählen Sie ein Ziel für den Eintrag des Inhaltsverzeichnisses" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -19948,42 +20075,98 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "&Name des Inhaltsverzeichnis-Eintrags:" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "Momentan gewähltes Ziel:" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "Datei:" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "Anfang der Datei" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "(Unbenannt)" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "Ungefähr %d%% vom Anfang aus" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "Ort: Ein <%s>-Marker innerhalb der Datei" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "ToC aus XPath erzeugen" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "Stufe %s ToC:" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "Einstellungen &speichern" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "Einstellungen &laden" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "Kein XPaths" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "Es wurde kein XPaths eingegeben" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "Der XPath-Ausdruck %s ist ungültig." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." @@ -19991,7 +20174,7 @@ msgstr "" "Sie können vorhandene Einträge des Inhaltsverzeichnisses bearbeiten, indem " "Sie diese in der Menüleiste auf der linken Seite anklicken." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " @@ -20001,11 +20184,67 @@ msgstr "" "überprüft wurde. Einträge mit einem roten Punkt sind beschädigt und müssen " "eventuell repariert werden." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "Einen &neuen Eintrag erstellen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "ToC aus &Hauptüberschriften erzeugen" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" +"Ein Inhaltsverzeichnis aus den Hauptüberschriften des Buches erzeugen. Dies " +"funktioniert nur, wenn das Buch die Überschriften anhand von HTML-" +"Überschriften-Markierungen kennzeichnet. Verwendet die Markierungen

, " +"

,

." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "ToC aus &allen Überschriften erzeugen" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" +"Ein Inhaltsverzeichnis aus allen Überschriften des Buches erzeugen.Dies " +"funktioniert nur, wenn das Buch die Überschriften anhand von HTML-" +"Überschriften-Markierungen kennzeichnet. Verwendet die Markierungen ." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "ToC aus &Verweisen erzeugen" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "ToC aus &XPath erzeugen" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -20013,7 +20252,7 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" @@ -20022,74 +20261,82 @@ msgstr "" "verschieben, oder indem Sie die Knöpfe mit den Pfeilen auf der linken Seite " "verwenden" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "Den &Ort ändern, auf den dieser Eintrag zeigt" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "Diesen Eintrag &entfernen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "Einen neuen Eintrag &innerhalb dieses Eintrags anlegen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "Einen neuen Eintrag &oberhalb dieses Eintrags anlegen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "Einen neuen Eintrag &unterhalb dieses Eintrags anlegen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "Diesen Eintrag eine&bnen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" "Alle Kinder dieses Eintrags werden auf die gleiche Stufe gesetzt wie dieser " "Eintrag." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "Willkommen-Bildschirm &zurückgeben" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "Zur obersten Ansicht zurück kehren" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "Dieser Eintrag zeigt auf ein vorhandenes Ziel" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "Der Ort auf den dieser Eintrag zeigt existiert nicht" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "Aktuellen Eintrag nach oben verschieben" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "Alle gewählten Einträge löschen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "Aktuellen Eintrag nach unten verschieben" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "Alles &ausklappen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "Alles &einklappen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "Klicken Sie doppelt auf einen Eintrag, um den Text anzupassen" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "Titel: {0} Ziel: {1}{2}" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" @@ -20098,37 +20345,54 @@ msgstr "" "Der Ort, auf den dieser Eintrag zeigt, existiert nicht:\n" "%s" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "Keine Einträge gefunden" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" +"Es wurden keine Einträge gefunden, die zum Inhaltsverzeichnis hinzugefügt " +"werden könnten." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" +"Es wurden keine Verweise gefunden, die zum Inhaltsverzeichnis hinzugefügt " +"werden könnten." + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "Inhaltsverzeichnis bearbeiten in %s" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "%s wird geladen, bitte warten..." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "%s wird geschrieben, bitte warten …" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "Schreiben des Buches gescheitert" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" "%s konnte nicht geschrieben werden. Klicken Sie auf »Einzelheiten anzeigen« " "um weitere Informationen zu erhalten." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "Laden des Buches gescheitert" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -20140,11 +20404,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "Konvertiere Buch %(num)d von %(total)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "Konvertierung nicht erfolgreich" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -20158,21 +20422,21 @@ msgstr "" "Dateien außerhalb der Calibre Bibliothek bewegt haben. Sie werden die " "Dateien aufinden und neu in Calibre hinfügen müssen." -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "Keine unterstütze Formate (Verfügbare Formate: %s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "Dieser Buch hat keine eBook Dateien" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "Konnte einige Bücher nicht konvertieren" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " @@ -20181,20 +20445,20 @@ msgstr "" "Konvertierung von %(num)d aus %(tot)d Bücher fehlgeschlagen, da keine " "unterstützte Eingabeformat gefunden." -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "Bücher sammeln und zusammen konvertieren" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "Sammeln " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "Konvertiere Buch %(num)d von %(tot)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " @@ -20203,15 +20467,15 @@ msgstr "" "%(num)d von %(tot)d Büchern konnten nicht konvertiert werden, weil kein " "passendes Ausgangsformat erkannt werden konnte." -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "Nachrichten abrufen von " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "Konvertiere vorhandene" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -21750,7 +22014,7 @@ msgstr "" "ebook.com/faq.html#how-do-i-use-app-with-my-ipad-iphone-ipod-" "touch\">Benutzerhandbuch." -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -21769,7 +22033,7 @@ msgstr "" "Standard: '%%default'\n" "Gilt für: BIBTEX Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -21782,7 +22046,7 @@ msgstr "" "Standard: '%default'\n" "Angewendet bei: BibTeX- Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -21795,7 +22059,7 @@ msgstr "" "Standard: '%default'\n" "Angewendet bei: BibTeX- Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -21809,7 +22073,7 @@ msgstr "" "Standard: '%default'\n" "Gilt für: BIBTEX Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -21824,7 +22088,7 @@ msgstr "" "Standard: '%%default'\n" "Gilt für: BIBTEX-Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -21837,7 +22101,7 @@ msgstr "" "Voreingestellt: '%default'\n" "Betrifft: BIBTEX Ausgabe-Format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -21850,7 +22114,7 @@ msgstr "" "Standard: '%default'\n" "Angewendet bei: BibTeX- Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -22118,6 +22382,15 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" @@ -22126,7 +22399,7 @@ msgstr "" "Standard: '%default'\n" "Betrifft: AZW3, ePub, MOBI Ausgabeformat" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -22139,7 +22412,21 @@ msgstr "" "Standard: '%default'\n" "Wird andewandt bei AZW3, ePub und MOBI-Ausgabeformaten" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "Fehler: Voreinstellung »%s« nicht gefunden." + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "Gespeicherte Voreinstellungen: %s" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "Fehler: Keine gespeicherten Voreinstellungen." + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -22165,7 +22452,7 @@ msgid "No books available to catalog" msgstr "Keine Bücher im Katalog verfügbar" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "Titel" @@ -22174,12 +22461,12 @@ msgid "Genres" msgstr "Genres" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "Kürzlich hinzugefügt" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "Kürzlich gelesen" @@ -22216,103 +22503,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "Keine Bücher verfügbar um sie dem Katalog hinzuzufügen" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "Genres HTML" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "Titel HTML" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "von " -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "Beschreibungen HTML" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "Beschreibung HTML" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "NCX Header" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "NCX für Beschreibungen" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "NCX für Serien" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "Serien beginnen mit %s" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "Serien beginnend mit '%s'" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "NCX für Titel" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "Titel beginnen mit %s" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "Titel beginnend mit '%s'" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "NCX für Autoren" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "Autoren beginnend mit '%s'" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" -msgstr "Autoren beginnen mit mit %s" +msgstr "Autoren beginnen mit %s" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "NCX für Zuletzt hinzugefügt" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "NCX für Zuletzt gelesen" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "NCX für Genres" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "OPF wird generiert" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "Vorschaubilder" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "Vorschaubild" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "NCX wird gespeichert" @@ -22427,7 +22714,7 @@ msgstr "" "Benutzerhandbuch an. Voreinstellung ist, keine Filterung durchzuführen." #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -22695,17 +22982,23 @@ msgstr "Eine Verzeichnis ID muss als erstes Argument angegeben werden" msgid "You must specify either a field or an opf file" msgstr "Es muss entweder ein Feld oder eine opf Datei angegeben werden" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "Die OPF Datei %s existiert nicht" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "%s ist kein bekanntes Feld" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -22723,29 +23016,29 @@ msgstr "" "Metadaten (in einer opf-Datei). \n" "Die ID-Nummern erhalten Sie mit dem Befehl list.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" "Exportiere alle Bücher der Datenbank, die Liste der IDs wird ignoriert." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "Exportiere Bücher in das angegebene Verzeichnis. Voreinstellung ist" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "Exportiere alle Bücher in ein einziges Verzeichnis" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "Die Betätigung dieses Schalters stellt das Verhalten aus." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "Sie müssen IDs oder die Option %s angeben" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -22763,7 +23056,7 @@ msgstr "" "benutzerfreundliche Name der Spalte.\n" "Datentyp ist einer von : {0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." @@ -22771,7 +23064,7 @@ msgstr "" "Diese Spalte speichert Daten ähnlich wie bei Schlagwörtern (z.B. mehrere " "durch Kommata getrennte Werte). Gilt nur, wenn der Datentyp Text ist." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -22791,11 +23084,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "Sie müssen Beschriftung, Name und Datentyp angeben" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -22813,7 +23106,7 @@ msgstr "" "werden.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" @@ -22824,7 +23117,7 @@ msgstr "" "Wenn angegeben, wird --search ignoriert.\n" "Voreinstellung: Alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" @@ -22834,17 +23127,17 @@ msgstr "" "please see the search-related documentation in the User Manual.\n" "Default: no filtering" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" "Detaillierte Ausgabeinformation anzeigen. Hilfreich zur Fehlerdiagnose." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "Fehler: Sie müssen eine Katalog-Ausgabedatei angeben" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -22866,7 +23159,7 @@ msgstr "" " Befehls.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." @@ -22874,11 +23167,11 @@ msgstr "" "Wenn die Spalte mehrere Werte speichert, sollen die angegebenen Werte zu den " "bestehenden hinzugefügt werden, anstatt sie zu ersetzen." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "Fehler: Sie müssen einen Feldnamen, eine ID und einen Wert angeben" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -22893,21 +23186,27 @@ msgstr "" "Spaltenbeschriftung und IDs.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "Details jeder Spalte anzeigen." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -"Es werden alle Daten gelöscht in der Spalte: %r. Sind Sie sicher (j/n)? " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "j" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -22924,15 +23223,15 @@ msgstr "" " Spalten mit dem custom_columns Befehl anzeigen lassen.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "Nicht nach einer Bestätigung fragen" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "Fehler: Sie müssen eine Spaltenbeschriftung angeben" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -22954,40 +23253,40 @@ msgstr "" " Suche mit gleichem Namen hinzugefügt wird.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "Fehler: Sie müssen eine Aktion angeben (add|remove|list)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "Name:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "Suchausdruck:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "Fehler: Sie müssen einen Namen und einen Suchausdruck angeben" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "hinzugefügt" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "Fehler: Sie müssen einen Namen angeben" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "entfernt" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "Fehler: Aktion %s nicht erkannt, muss sein aus: (add|remove|list)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -23009,7 +23308,7 @@ msgstr "" "Dies ist im Normalfall nicht nötig, da eine Sicherung als OPF Datei jedesmal " "erstellt wird, sobald sich die Metadaten ändern.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." @@ -23017,7 +23316,7 @@ msgstr "" "Normalerweise beachtet dieser Befehl nur Bücher, deren OPF Dateien nicht " "mehr aktuell sind. Diese Option führt den Befehl für alle Bücher aus." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -23029,12 +23328,12 @@ msgstr "" "Führt einige Überprüfungen auf dem Dateisystem einer Bibliothek durch. " "Reports sind {0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "Ausgabe als CSV" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" @@ -23042,7 +23341,7 @@ msgstr "" "Komma-separierte Liste mit Reporten.\n" "Standard: alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" @@ -23050,7 +23349,7 @@ msgstr "" "Komma-separierte Liste der zu ignorierenden Erweiterungen.\n" "Standard: alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" @@ -23058,11 +23357,11 @@ msgstr "" "Komma-separierte Liste der zu ignorierenden Namen.\n" "Standard: alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "Unbekannte Berichtüberprüfung" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -23091,7 +23390,7 @@ msgstr "" "genau wie die in den OPF- Dateien gespeicherten Daten.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." @@ -23099,14 +23398,14 @@ msgstr "" "Führt die Wiederherstellung tatsächlich durch. Der Befehl wird nicht " "ausgeführt, wenn diese Option nicht vorhanden ist." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" "Sie müssen folgende Option angeben, um eine Wiederherstellung durchzuführen: " "%s" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -23119,7 +23418,7 @@ msgstr "" "Die Information entspricht dem, was im Schlagwort-Browser angezeigt\n" "wird.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" @@ -23127,7 +23426,7 @@ msgstr "" "Nur Anzahl der Einträge in einer Kategorie ausgeben anstelle der Anzahl pro " "Eintrag in der Kategorie" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." @@ -23135,7 +23434,7 @@ msgstr "" "Zeichen, mit dem Kategorie- Werte im CSV- Modus umschlossen werden. Standard " "sind Anführungszeichen (\")." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" @@ -23143,17 +23442,17 @@ msgstr "" "Komma-separierte Liste von Kategorie-Suchnamen.\n" "Standard: alle" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" "Zeichenfolge zur Aufteilung von Feldern im CSV- Modus. Standard ist ein " "Komma." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "KATEGORIE EINTRÄGE" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -23200,17 +23499,17 @@ msgstr "Erstelle benutzerdefinierte Spalte " msgid " (%s books)" msgstr " (%s Bücher)" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "

Migriere alte Datenbank zu eBook Bibliothek in %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "Kopiere %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "Komprimiere Datenbank" @@ -24801,194 +25100,198 @@ msgid "English (Pakistan)" msgstr "Englisch (Pakistan)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 +msgid "English (Poland)" +msgstr "Englisch (Polen)" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 msgid "English (Croatia)" msgstr "Englisch (Kroatien)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 msgid "English (Hong Kong)" msgstr "Englisch (Hongkong)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 msgid "English (Hungary)" msgstr "Englisch (Ungarn)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 msgid "English (Indonesia)" msgstr "Englisch (Indonesien)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 msgid "English (Israel)" msgstr "Englisch (Israel)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 msgid "English (Russia)" msgstr "Englisch (Russland)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 msgid "English (Singapore)" msgstr "Englisch (Singapur)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 msgid "English (Yemen)" msgstr "Englisch (Jemen)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 msgid "English (Ireland)" msgstr "Englisch" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 msgid "English (China)" msgstr "Englisch (China)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 msgid "English (South Africa)" msgstr "Englisch (Südafrika)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 msgid "Spanish (Paraguay)" msgstr "Spanisch (Paraguay)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 msgid "Spanish (Uruguay)" msgstr "Spanisch (Uruguay)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 msgid "Spanish (Argentina)" msgstr "Spanisch (Argentinien)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 msgid "Spanish (Costa Rica)" msgstr "Spanisch (Costa Rica)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 msgid "Spanish (Mexico)" msgstr "Spanisch (Mexiko)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 msgid "Spanish (Cuba)" msgstr "Spanisch (Kuba)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 msgid "Spanish (Chile)" msgstr "Spanisch (Chile)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 msgid "Spanish (Ecuador)" msgstr "Spanisch (Equador)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 msgid "Spanish (Honduras)" msgstr "Spanisch (Honduras)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 msgid "Spanish (Venezuela)" msgstr "Spanisch (Venezuela)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 msgid "Spanish (Bolivia)" msgstr "Spanisch (Bolivien)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 msgid "Spanish (Nicaragua)" msgstr "Spanisch (Nicaragua)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 msgid "Spanish (Colombia)" msgstr "Spanisch (Kolumbien)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 msgid "German (AT)" msgstr "Deutsch (AT)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 msgid "French (BE)" msgstr "Französisch (BE)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 msgid "Dutch (NL)" msgstr "Holländisch (NL)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "Holländisch (BE)" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "vormittags" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "nachmittags" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "vormittags" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "nachmittags" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "&Kopieren" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "Alles auswählen" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "Alles au&swählen" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "&Link-Adresse Kopieren" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "&Rückgängig" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "Wiede&rholen" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "Ausschneiden" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "Einfügen" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "Einfügen und dem Stil anpassen" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "Anweisungen" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "Links nach Rechts" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "Rechts nach Links" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "Schriftarten" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "&Schritt aufwärts" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "Schritt a&bwärts" @@ -25067,7 +25370,7 @@ msgid "Unknown feed" msgstr "Feed unbekannt" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "Artikel ohne Titel" @@ -25075,114 +25378,114 @@ msgstr "Artikel ohne Titel" msgid "Unknown News Source" msgstr "Nachrichtenquelle unbekannt" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "Fehler beim Download von %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" "Das \"%s\" Downloadschema benötigt einen Benutzernamen und ein Passwort." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "Download beendet" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "Der Download der folgenden Artikel schlug fehl:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "Der Download von Teilen der folgenden Artikel schlug fehl:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr " von " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "\tFehlgeschlagene Verknüpfungen:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "Konnte Artikel nicht abrufen." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" "Die Fehlerdiagnose-Rückverfolgung befindet sich weiter oben in diesem " "Protokoll" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "Mit -vv starten, um den Grund zu sehen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "Rufe Feeds ab..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "Feeds der Index-Seite erhalten" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "Es wird versucht ein Coverbild herunterzuladen ..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "Erstelle Impressum..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "Herunterladen von [%d Thread(s)] wird gestartet …" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "Feeds wurden nach %s heruntergeladen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "Coverbild konnte nicht heruntergeladen werden: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "Coverbild von %s herunterladen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "Impressumskopie geladen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "Artikel in dieser Ausgabe: " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "Artikel ohne Titel" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "Artikel heruntergeladen: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "Herunterladen der Artikel schlug fehl: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "Feed abrufen" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." @@ -25190,7 +25493,7 @@ msgstr "" "Login fehlgeschlagen, überprüfen Sie Ihren Benutzername und Passwort für den " "Calibre Magazin Service." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -25238,7 +25541,7 @@ msgstr "Sektionen" msgid "Articles" msgstr "Artikel" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" @@ -25248,14 +25551,14 @@ msgstr "" "\n" "URL ist z.B. http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" "Grundverzeichnis, in das die URL gespeichert wird. Voreinstellung ist " "%default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " @@ -25264,7 +25567,7 @@ msgstr "" "Timeout in Sekunden beim Warten auf eine Antwort vom Server. Voreinstellung: " "%default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " @@ -25273,7 +25576,7 @@ msgstr "" "Maximale Zahl von einbezogenen Ebenen, z.B. Tiefe der Links, die verfolgt " "werden. Voreinstellung %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from Tags zu. Voreinstellung ist %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " @@ -25291,7 +25594,7 @@ msgstr "" "Kleinstes Intervall in Sekunden zwischen aufeinander folgenden Abrufen. " "Voreinstellung ist %default s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -25299,7 +25602,7 @@ msgstr "" "Zeichenkodierung für Webseiten, die zu laden versucht werden. In der " "Voreinstellung wird versucht, die Kodierung zu erraten." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -25310,7 +25613,7 @@ msgstr "" "sie einem regulären Ausdruck entsprechen. In der Voreinstellung werden alle " "Links verfolgt." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -25323,7 +25626,7 @@ msgstr "" "ignoriert. Standardmäßig wird kein Link ignoriert. Werden sowohl Filter- als " "auch Suchausdrücke verwendet, werden die Filterausdrücke zuerst angewendet." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "CSS-Stylesheets nicht herunterladen." @@ -25331,10 +25634,6 @@ msgstr "CSS-Stylesheets nicht herunterladen." msgid "OK" msgstr "OK" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "Speichern" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "Öffnen" diff --git a/src/calibre/translations/el.po b/src/calibre/translations/el.po index a613146c7e..9335c5eac5 100644 --- a/src/calibre/translations/el.po +++ b/src/calibre/translations/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2013-01-03 19:23+0000\n" "Last-Translator: Kovid Goyal \n" "Language-Team: Greek \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:40+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:13+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Δεν κάνει τίποτα" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Δεν κάνει τίποτα" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Δεν κάνει τίποτα" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Δεν κάνει τίποτα" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Δεν κάνει τίποτα" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Δεν κάνει τίποτα" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -1004,8 +1007,8 @@ msgstr "Ενεργοποίηση του ονομαζόμενου προσθέτ msgid "Disable the named plugin" msgstr "Απενεργοποίηση του ονομαζόμενου προσθέτου" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -1017,7 +1020,7 @@ msgstr "" "Η διαδρομή για την βιβλιοθήκη είναι πολύ μεγάλη. Πρέπει να είναι μικρότερη " "απο %d χαρακτήρες" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1032,25 +1035,25 @@ msgstr "Ναι" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Κύρια μνήμη" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Κάρτα μνήμης Α" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Κάρτα μνήμης Β" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1069,7 +1072,7 @@ msgstr "Κάρτα μνήμης Β" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Ειδήσεις" @@ -1310,8 +1313,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Κατάλογος" @@ -1994,7 +1997,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2627,7 +2630,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2678,30 +2681,30 @@ msgstr "" "\n" "Για την πλήρη τεκμηρίωση του συστήματος μετατροπής δείτε\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "ΠΑΡΑΜΕΤΡΟΙ ΕΙΣΑΓΩΓΗΣ" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "ΠΑΡΑΜΕΤΡΟΙ ΕΞΑΓΩΓΗΣ" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" "Παράμετροι για τον έλεγχο της επεξεργασίας του εισαγόμενου αρχείου %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "Παράμετροι για τον έλεγχο της επεξεργασίας του εξαγόμενου αρχείου %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "Παράμετροι για τον έλεγχο της εμφάνισης και του ύφους των εξαγομένων" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2709,16 +2712,16 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "Έλεγχος αυτόματου εντοπισμού της δομής του εγγράφου" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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 " @@ -2728,21 +2731,21 @@ msgstr "" "αρχείο προέλευσης έχει Πίνακα Περιεχομένων, αυτός θα χρησιμοποιηθεί κατά " "προτεραιότητα σε σχέση μ'εκείνον που παράγεται αυτόματα." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "Παράμετροι για τον καθορισμό των μεταδεδομένων στα εξαγόμενα" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "Παράμετροι που βοηθούν στη διόρθωση (αποσφαλμάτωση) της μετατροπής" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "Τα εξαγόμενα αποθηκεύτηκαν στον/στην" @@ -2949,13 +2952,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2963,7 +2966,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4357,20 +4360,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4391,7 +4397,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4532,52 +4538,52 @@ msgstr "" msgid "Cover" msgstr "Εξώφυλλο" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "Κατέβασμα μεταδεδομένων και εξώφυλλων από το Amazon" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4694,9 +4700,9 @@ msgstr "Δεν υπάρχουν διαθέσιμες λεπτομέρειες" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4806,7 +4812,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4945,22 +4951,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5505,6 +5518,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "Άρνηση πρόσβασης" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5788,12 +5816,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5898,7 +5925,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6540,14 +6567,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7288,7 +7318,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7356,18 +7386,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7422,7 +7441,7 @@ msgid "Path" msgstr "Διαδρομή" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7443,7 +7462,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7467,7 +7486,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7486,7 +7505,7 @@ msgstr "έξοδος" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7510,7 +7529,7 @@ msgstr "έξοδος" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7587,78 +7606,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7666,77 +7713,128 @@ msgstr "" msgid "Name" msgstr "Όνομα" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "Αποθήκευση" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "Διαγραφή" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7744,102 +7842,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -9175,7 +9274,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "Μετατροπή" @@ -9242,6 +9341,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9297,30 +9397,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9504,11 +9622,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -10126,6 +10244,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -10134,16 +10262,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10641,6 +10769,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -11004,10 +11136,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11228,11 +11356,6 @@ msgstr "" msgid "Sa&ve" msgstr "Απο&θήκευση" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "Διαγραφή" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11725,7 +11848,7 @@ msgstr "Εγκατάλειψη..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Συγγραφείς" @@ -13126,46 +13249,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "έκδοση" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "Δημιουργήθηκε από τον Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13436,14 +13559,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "Άρνηση πρόσβασης" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13633,57 +13748,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13691,60 +13806,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "Το %s εκτελείται ήδη." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -14173,11 +14288,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14912,28 +15022,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15458,68 +15568,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "Μικρό" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "Μεγάλο" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "Μεσαίο" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "Πάντα" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "Ποτέ" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "Απενεργοποιημένο" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "Διαμερισμένο" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17708,11 +17818,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17723,59 +17845,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17783,113 +18010,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17899,11 +18147,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17912,56 +18160,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "Λήψη ειδήσεων από " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19363,7 +19611,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19375,7 +19623,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19384,7 +19632,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19393,7 +19641,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19402,7 +19650,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19412,7 +19660,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19421,7 +19669,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19430,7 +19678,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19608,12 +19856,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19622,7 +19879,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19645,7 +19916,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19654,12 +19925,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19693,103 +19964,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19886,7 +20157,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -20089,17 +20360,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -20110,28 +20387,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -20142,13 +20419,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -20168,11 +20445,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -20183,30 +20460,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -20218,17 +20495,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20237,20 +20514,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20260,15 +20544,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20281,40 +20565,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "Όνομα:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "προστέθηκε" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20328,13 +20612,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20342,34 +20626,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20384,18 +20668,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20403,33 +20687,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20466,17 +20750,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "Συμπίεση βάσης δεδομένων" @@ -21749,194 +22033,198 @@ msgid "English (Pakistan)" msgstr "Αγγλικά (Πακιστάν)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 +msgid "English (Poland)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 msgid "English (Croatia)" msgstr "Αγγλικά (Κροατία)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 msgid "English (Hong Kong)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 msgid "English (Hungary)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 msgid "English (Indonesia)" msgstr "Αγγλικά (Ινδονησία)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 msgid "English (Israel)" msgstr "Αγγλικά (Ισραήλ)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 msgid "English (Russia)" msgstr "Αγγλικά (Ρωσία)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 msgid "English (Singapore)" msgstr "Αγγλικά (Σιγκαπούρη)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 msgid "English (Yemen)" msgstr "Αγγλικά (Υεμένη)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 msgid "English (Ireland)" msgstr "Αγγλικά (Ιρλανδία)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 msgid "English (China)" msgstr "Αγγλικά (Κίνα)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 msgid "English (South Africa)" msgstr "Αγγλικά (Νότια Αφρική)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 msgid "Spanish (Paraguay)" msgstr "Ισπανικά (Παραγουάη)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 msgid "Spanish (Uruguay)" msgstr "Ισπανικά (Ουρουγουάη)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 msgid "Spanish (Argentina)" msgstr "Ισπανικά (Αργεντινή)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 msgid "Spanish (Costa Rica)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 msgid "Spanish (Mexico)" msgstr "Ισπανικά (Μεξικό)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 msgid "Spanish (Cuba)" msgstr "Ισπανικά (Κούβα)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 msgid "Spanish (Chile)" msgstr "Ισπανικά (Χιλή)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 msgid "Spanish (Ecuador)" msgstr "Ισπανικά (Εκουαδόρ)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 msgid "Spanish (Honduras)" msgstr "Ισπανικά (Ονδούρα)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 msgid "Spanish (Venezuela)" msgstr "Ισπανικά (Βενεζουέλα)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 msgid "Spanish (Bolivia)" msgstr "Ισπανικά (Βολιβία)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 msgid "Spanish (Nicaragua)" msgstr "Ισπανικά (Νικαράγουα)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 msgid "Spanish (Colombia)" msgstr "Ισπανικά (Κολομβία)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 msgid "German (AT)" msgstr "Γερμανικά (AT)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 msgid "French (BE)" msgstr "Γαλικά (ΒΕ)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 msgid "Dutch (NL)" msgstr "Ολανδικά (NL)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "Ολανδικά (ΒΕ)" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "π.μ." #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "μ.μ." #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "πμ" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "μμ" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -22012,7 +22300,7 @@ msgid "Unknown feed" msgstr "Άγνωστη ροή δεδομένων" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -22020,117 +22308,117 @@ msgstr "" msgid "Unknown News Source" msgstr "Άγνωστη πηγή ειδήσεων" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "Η λήψη τελείωσε" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr " από " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "Δεν ήταν δυνατή η λήψη άρθρου" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "Γίνεται λήψη των RSS feeds..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "Άρθρα σε αυτό το τεύχος: " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "Άρθρο χωρίς τίτλο" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "Το άρθρο κατέβηκε: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -22175,60 +22463,60 @@ msgstr "Ενότητες" msgid "Articles" msgstr "Άρθρα" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22236,7 +22524,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22244,10 +22532,6 @@ msgstr "" msgid "OK" msgstr "Εντάξει" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "Αποθήκευση" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "Άνοιγμα" diff --git a/src/calibre/translations/en_AU.po b/src/calibre/translations/en_AU.po index 43510d098e..e906c74327 100644 --- a/src/calibre/translations/en_AU.po +++ b/src/calibre/translations/en_AU.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2012-07-14 23:02+0000\n" "Last-Translator: Cruz Bishop \n" "Language-Team: English (Australia) \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:53+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:26+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -944,8 +947,8 @@ msgstr "" msgid "Disable the named plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -955,7 +958,7 @@ msgstr "" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -970,25 +973,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1007,7 +1010,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1243,8 +1246,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "" @@ -1919,7 +1922,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2542,7 +2545,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2568,29 +2571,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2598,37 +2601,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2811,13 +2814,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2825,7 +2828,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4158,20 +4161,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4192,7 +4198,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4333,52 +4339,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4494,9 +4500,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4606,7 +4612,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4745,22 +4751,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5299,6 +5312,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5582,12 +5610,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5692,7 +5719,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6327,14 +6354,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7075,7 +7105,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7143,18 +7173,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7209,7 +7228,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7230,7 +7249,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7254,7 +7273,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7273,7 +7292,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7297,7 +7316,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7374,78 +7393,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7453,77 +7500,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7531,102 +7629,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8962,7 +9061,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9029,6 +9128,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9084,30 +9184,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9291,11 +9409,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9913,6 +10031,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9921,16 +10049,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10428,6 +10556,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10791,10 +10923,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11015,11 +11143,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11512,7 +11635,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12913,46 +13036,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13223,14 +13346,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13420,57 +13535,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13478,60 +13593,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13960,11 +14075,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14699,28 +14809,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15245,68 +15355,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17495,11 +17605,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17510,59 +17632,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17570,113 +17797,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17686,11 +17934,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17699,56 +17947,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19132,7 +19380,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19144,7 +19392,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19153,7 +19401,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19162,7 +19410,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19171,7 +19419,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19181,7 +19429,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19190,7 +19438,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19199,7 +19447,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19377,12 +19625,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19391,7 +19648,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19414,7 +19685,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19423,12 +19694,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19462,103 +19733,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19655,7 +19926,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19858,17 +20129,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19879,28 +20156,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19911,13 +20188,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19937,11 +20214,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19952,30 +20229,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -19987,17 +20264,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20006,20 +20283,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20029,15 +20313,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20050,40 +20334,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20097,13 +20381,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20111,34 +20395,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20153,18 +20437,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20172,33 +20456,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20235,17 +20519,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21518,194 +21802,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21781,7 +22069,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21789,117 +22077,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21944,60 +22232,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22005,7 +22293,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22013,10 +22301,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/en_CA.po b/src/calibre/translations/en_CA.po index 94854a2996..3055f3d3f9 100644 --- a/src/calibre/translations/en_CA.po +++ b/src/calibre/translations/en_CA.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2011-08-05 17:28+0000\n" "Last-Translator: Kovid Goyal \n" "Language-Team: English (Canada) \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:54+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:26+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -942,8 +945,8 @@ msgstr "Enable the named plugin" msgid "Disable the named plugin" msgstr "Disable the named plugin" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -953,7 +956,7 @@ msgstr "Disable the named plugin" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -968,25 +971,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1005,7 +1008,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "News" @@ -1241,8 +1244,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "" @@ -1917,7 +1920,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2545,7 +2548,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2571,29 +2574,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "INPUT OPTIONS" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "OUTPUT OPTIONS" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "Options to control the processing of the input %s file" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "Options to control the processing of the output %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "Options to control the look and feel of the output" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2601,37 +2604,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "Control auto-detection of document structure." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "Options to set metadata in the output" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "Options to help with debugging the conversion" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "Output saved to" @@ -2834,7 +2837,7 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -2842,7 +2845,7 @@ msgstr "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2850,7 +2853,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4229,20 +4232,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4263,7 +4269,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4404,52 +4410,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4565,9 +4571,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4677,7 +4683,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4816,22 +4822,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5370,6 +5383,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5653,12 +5681,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5763,7 +5790,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6398,14 +6425,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7146,7 +7176,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7214,18 +7244,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7280,7 +7299,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7301,7 +7320,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7325,7 +7344,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7344,7 +7363,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7368,7 +7387,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7445,78 +7464,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7524,77 +7571,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7602,102 +7700,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -9033,7 +9132,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9100,6 +9199,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9155,30 +9255,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9362,11 +9480,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9984,6 +10102,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9992,16 +10120,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10499,6 +10627,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10862,10 +10994,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11086,11 +11214,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11583,7 +11706,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12984,46 +13107,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13294,14 +13417,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13491,57 +13606,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13549,60 +13664,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -14031,11 +14146,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14770,28 +14880,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15316,68 +15426,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17566,11 +17676,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17581,59 +17703,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17641,113 +17868,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17757,11 +18005,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17770,56 +18018,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19203,7 +19451,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19215,7 +19463,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19224,7 +19472,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19233,7 +19481,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19242,7 +19490,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19252,7 +19500,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19261,7 +19509,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19270,7 +19518,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19448,12 +19696,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19462,7 +19719,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19485,7 +19756,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19494,12 +19765,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19533,103 +19804,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19726,7 +19997,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19929,17 +20200,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19950,28 +20227,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19982,13 +20259,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -20008,11 +20285,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -20023,30 +20300,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -20058,17 +20335,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20077,20 +20354,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20100,15 +20384,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20121,40 +20405,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20168,13 +20452,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20182,34 +20466,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20224,18 +20508,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20243,33 +20527,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20306,17 +20590,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21589,194 +21873,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21852,7 +22140,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21860,117 +22148,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -22015,60 +22303,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22076,7 +22364,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22084,10 +22372,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/en_GB.po b/src/calibre/translations/en_GB.po index 62cd6fba3c..4cab8a1688 100644 --- a/src/calibre/translations/en_GB.po +++ b/src/calibre/translations/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2013-01-03 19:04+0000\n" "Last-Translator: Vibhav Pant \n" "Language-Team: English (United Kingdom) \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:53+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:25+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Does absolutely nothing" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -984,8 +987,8 @@ msgstr "Enable the named plug-in" msgid "Disable the named plugin" msgstr "Disable the named plug-in" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -995,7 +998,7 @@ msgstr "Disable the named plug-in" msgid "Path to library too long. Must be less than %d characters." msgstr "Path to library too long. Must be less than %d characters." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1010,25 +1013,25 @@ msgstr "Yes" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)sAverage rating is %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Main" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Card A" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Card B" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1047,7 +1050,7 @@ msgstr "Card B" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "News" @@ -1306,8 +1309,8 @@ msgstr "" "Click 'Show Details' for a list." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Catalogue" @@ -2027,7 +2030,7 @@ msgid "Communicate with the Ex124G" msgstr "Communicate with the Ex124G" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2698,7 +2701,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2746,29 +2749,29 @@ msgstr "" "\n" "For full documentation of the conversion system see\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "INPUT OPTIONS" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "OUTPUT OPTIONS" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "Options to control the processing of the input %s file" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "Options to control the processing of the output %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "Options to control the look and feel of the output" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2779,16 +2782,16 @@ msgstr "" "default. Use %(en)s to enable. Individual actions can be disabled with the " "%(dis)s options." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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 "Modify the document text and structure using user defined patterns." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "Control auto-detection of document structure." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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 " @@ -2798,15 +2801,15 @@ msgstr "" "source file has a Table of Contents, it will be used in preference to the " "automatically generated one." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "Options to set metadata in the output" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "Options to help with debugging the conversion" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" @@ -2814,7 +2817,7 @@ msgstr "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "Output saved to" @@ -3056,7 +3059,7 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "for a complete list with descriptions." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -3064,7 +3067,7 @@ msgstr "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -3075,7 +3078,7 @@ msgstr "" "negative. 0 implies that no links in the root HTML file are followed. " "Default is %default." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4705,20 +4708,23 @@ msgstr "Comments" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4739,7 +4745,7 @@ msgstr "Tags" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4906,53 +4912,53 @@ msgstr "" msgid "Cover" msgstr "Cover" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "Downloads metadata and covers from Amazon" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "US" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "France" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "Germany" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "UK" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "Italy" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "Japan" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "Spain" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "Amazon website to use:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "" "Metadata from Amazon will be fetched using this country's Amazon website." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "Amazon timed out. Try again later." @@ -5080,9 +5086,9 @@ msgstr "No details available" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -5192,7 +5198,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -5331,22 +5337,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5908,6 +5921,21 @@ msgstr "Export Catalogue Directory" msgid "Select destination for %(title)s.%(fmt)s" msgstr "Select destination for %(title)s.%(fmt)s" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "Permission denied" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "Could not open %s. Is it being used by another program?" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -6206,12 +6234,11 @@ msgstr "Cannot convert" msgid "Starting conversion of %d book(s)" msgstr "Starting conversion of %d book(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "Empty output file, probably the conversion process crashed" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "%(title)s by %(author)s" @@ -6321,7 +6348,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -7002,14 +7029,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7784,7 +7814,7 @@ msgstr "" "calibre's library" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7855,20 +7885,7 @@ msgid "" msgstr "" "&Multiple books per folder, assumes every ebook file is a different book" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "Duplicates found!" - -#: /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?" -msgstr "" -"Books with the same title as the following already exist in the database. " -"Add them anyway?" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "Added %(num)d book(s) automatically from %(src)s" @@ -7923,7 +7940,7 @@ msgid "Path" msgstr "Path" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "Cover size: %(width)d x %(height)d" @@ -7944,7 +7961,7 @@ msgstr "BibTeX Options" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7968,7 +7985,7 @@ msgstr "Options specific to" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7987,7 +8004,7 @@ msgstr "output" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -8011,7 +8028,7 @@ msgstr "output" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -8095,78 +8112,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "CSV/XML Options" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "E-book options" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -8174,77 +8219,128 @@ msgstr "" msgid "Name" msgstr "Name" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "Save" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "Delete" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "Included sections" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "&Descriptions" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "Excluded books" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -8252,102 +8348,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "Excluded genres" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "Other options" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "&Before" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "&After" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr " inch" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -9735,7 +9832,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "Convert" @@ -9805,6 +9902,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "Invalid XPath" @@ -9866,30 +9964,48 @@ msgstr "Level &2 TOC (XPath expression):" msgid "Level &3 TOC (XPath expression):" msgstr "Level &3 TOC (XPath expression):" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "Do not add &detected chapters to the Table of Contents" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "Number of &links to add to Table of Contents" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "Chapter &threshold" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "&Force use of auto-generated Table of Contents" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "Do not add &detected chapters to the Table of Contents" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "Number of &links to add to Table of Contents" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "TOC &Filter:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "Chapter &threshold" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "Allow &duplicate links when creating the Table of Contents" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "TXT Input" @@ -10082,11 +10198,11 @@ msgstr "" "tag.

To learn more advanced usage of XPath see the XPath Tutorial." -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "Browse by covers" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "Cover browser could not be loaded" @@ -10729,6 +10845,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "&Tags to set on created book entries:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "Fit &cover within view" @@ -10737,16 +10863,16 @@ msgstr "Fit &cover within view" msgid "My Books" msgstr "My Books" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "Generate catalogue" @@ -11342,6 +11468,10 @@ msgstr "" " available at Open " "Books." +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "Duplicates found!" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -11735,10 +11865,6 @@ msgstr "Save search/replace" msgid "Search/replace name:" msgstr "Search/replace name:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11978,11 +12104,6 @@ msgstr "Save current search/replace" msgid "Sa&ve" msgstr "Sa&ve" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "Delete" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "Search &field:" @@ -12509,7 +12630,7 @@ msgstr "Aborting..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Authors" @@ -13995,46 +14116,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "Cover Browser" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "Shift+Alt+B" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "Tag Browser" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "Shift+Alt+T" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "version" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "created by Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " msgstr "Connected " -#: /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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "Book Details" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "Shift+Alt+D" @@ -14311,14 +14432,6 @@ msgstr "The lookup/search name is \"{0}\"" msgid "This book's UUID is \"{0}\"" msgstr "This book's UUID is \"{0}\"" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "Permission denied" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -14514,57 +14627,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "Calibre Library" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "Choose a location for your calibre e-book library" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "Failed to create library" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "Failed to create calibre library at: %r." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "Choose a location for your new calibre e-book library" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "Initialising user interface..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "Repairing failed" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "The database repair failed. Starting with a new empty library." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "Bad database location" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "Bad database location %r. calibre will now quit." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "Corrupted database" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -14575,61 +14688,61 @@ msgstr "" "try and rebuild it automatically? The rebuild may not be completely " "successful. If you say No, a new empty calibre library will be created." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" "Bad database location %r. Will start with a new, empty calibre library" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "Starting %s: Loading books..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "If you are sure it is not running" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "may be running in the system tray, in the" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "upper right region of the screen." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "lower right region of the screen." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "try rebooting your computer." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "try deleting the file" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "Cannot Start " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "%s is already running." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -15099,11 +15212,6 @@ msgstr "Change how Calibre downloads metadata" msgid " [%(num)d of %(tot)d]" msgstr " [%(num)d of %(tot)d]" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "Could not open %s. Is it being used by another program?" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -15912,28 +16020,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "No rule selected." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "No rule selected for %s." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "removal" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "You must select a column to delete it" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "The selected column is not a custom column" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "Do you really want to delete column %s and all its data?" @@ -16529,68 +16637,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "Narrow" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "Wide" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "Off" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "Small" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "Large" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "Medium" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "Always" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "If there is enough room" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "Never" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "By first letter" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "Disabled" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "Partitioned" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "Column colouring" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -19060,11 +19168,23 @@ msgstr "Partition" msgid "First letter is usable only when sorting by name" msgstr "First letter is usable only when sorting by name." -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -19075,59 +19195,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -19135,113 +19360,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -19251,11 +19497,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "Convert book %(num)d of %(total)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -19264,41 +19510,41 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "Could not convert some books" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "Queueing books for bulk conversion" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "Queueing " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "Convert book %(num)d of %(tot)d (%(title)s)" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " @@ -19307,15 +19553,15 @@ msgstr "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "Fetch news from " -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "Convert existing" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -20782,7 +21028,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -20801,7 +21047,7 @@ msgstr "" "Default: '%%default'\n" "Applies to: BIBTEX output format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -20814,7 +21060,7 @@ msgstr "" "Default: '%default'\n" "Applies to: BIBTEX output format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -20827,7 +21073,7 @@ msgstr "" "Default: '%default'\n" "Applies to: BIBTEX output format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -20840,7 +21086,7 @@ msgstr "" "Default: '%default'\n" "Applies to: BIBTEX output format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -20855,7 +21101,7 @@ msgstr "" "Default: '%%default'\n" "Applies to: BIBTEX output format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -20868,7 +21114,7 @@ msgstr "" "Default: '%default'\n" "Applies to: BIBTEX output format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -20881,7 +21127,7 @@ msgstr "" "Default: '%default'\n" "Applies to: BIBTEX output format" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -21074,12 +21320,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -21088,7 +21343,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -21113,7 +21382,7 @@ msgid "No books available to catalog" msgstr "No books available to catalogue" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -21122,12 +21391,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -21161,103 +21430,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "No books available to include in catalogue" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -21370,7 +21639,7 @@ msgstr "" "to do no filtering." #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -21612,17 +21881,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -21640,28 +21915,28 @@ msgstr "" "(in\n" "an opf file). You can get id numbers from the list command.\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "Export all books in database, ignoring the list of ids." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "Export books to the specified directory. Default is" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "Export all books into a single directory" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "Specifying this switch will turn this behavior off." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "You must specify some ids or the %s option" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -21679,7 +21954,7 @@ msgstr "" "column.\n" "datatype is one of: {0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." @@ -21687,7 +21962,7 @@ msgstr "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -21707,11 +21982,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "You must specify label, name and datatype" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -21729,7 +22004,7 @@ msgstr "" "ouput.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" @@ -21739,7 +22014,7 @@ msgstr "" "If declared, --search is ignored.\n" "Default: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" @@ -21749,16 +22024,16 @@ msgstr "" "please see the search-related documentation in the User Manual.\n" "Default: no filtering" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "Show detailed output information. Useful for debugging" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "Error: You must specify a catalogue output file" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -21778,7 +22053,7 @@ msgstr "" " command.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." @@ -21786,11 +22061,11 @@ msgstr "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "Error: You must specify a field name, id and value" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -21804,20 +22079,27 @@ msgstr "" " List available custom columns. Shows column labels and ids.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "Show details for each column." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " -msgstr "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " +msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "y" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -21833,15 +22115,15 @@ msgstr "" " columns with the custom_columns command.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "Do not ask for confirmation" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "Error: You must specify a column label" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -21863,40 +22145,40 @@ msgstr "" " replaced.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "Error: You must specify an action (add|remove|list)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "Name:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "Search string:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "Error: You must specify a name and a search string" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "added" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "Error: You must specify a name" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "removed" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "Error: Action %s not recognised, must be one of: (add|remove|list)" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -21910,13 +22192,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -21928,12 +22210,12 @@ msgstr "" "Perform some checks on the filesystem representing a library. Reports are " "{0}\n" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "Output in CSV" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" @@ -21941,7 +22223,7 @@ msgstr "" "Comma-separated list of reports.\n" "Default: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" @@ -21949,7 +22231,7 @@ msgstr "" "Comma-separated list of extensions to ignore.\n" "Default: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" @@ -21957,11 +22239,11 @@ msgstr "" "Comma-separated list of names to ignore.\n" "Default: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "Unknown report check" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -21987,7 +22269,7 @@ msgstr "" "what is found in the OPF files.\n" " " -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." @@ -21995,12 +22277,12 @@ msgstr "" "Really do the recovery. The command will not run unless this option is " "specified." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "You must provide the %s option to do a recovery" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -22012,7 +22294,7 @@ msgstr "" "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" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" @@ -22020,7 +22302,7 @@ msgstr "" "Output only the number of items in a category instead of the counts per item " "within the category" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." @@ -22028,7 +22310,7 @@ msgstr "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" @@ -22036,15 +22318,15 @@ msgstr "" "Comma-separated list of category lookup names.\n" "Default: all" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "The string used to separate fields in CSV mode. Default is a comma." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "CATEGORY ITEMS" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -22091,17 +22373,17 @@ msgstr "creating custom column " msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "

Migrating old database to ebook library in %s

" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "Copying %s" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "Compacting database" @@ -23646,194 +23928,198 @@ msgid "English (Pakistan)" msgstr "English (Pakistan)" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 +msgid "English (Poland)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 msgid "English (Croatia)" msgstr "English (Croatia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 msgid "English (Hong Kong)" msgstr "English (Hong Kong)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 msgid "English (Hungary)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 msgid "English (Indonesia)" msgstr "English (Indonesia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 msgid "English (Israel)" msgstr "English (Israel)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 msgid "English (Russia)" msgstr "English (Russia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 msgid "English (Singapore)" msgstr "English (Singapore)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 msgid "English (Yemen)" msgstr "English (Yemen)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 msgid "English (Ireland)" msgstr "English (Ireland)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 msgid "English (China)" msgstr "English (China)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 msgid "English (South Africa)" msgstr "English (South Africa)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 msgid "Spanish (Paraguay)" msgstr "Spanish (Paraguay)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 msgid "Spanish (Uruguay)" msgstr "Spanish (Uruguay)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 msgid "Spanish (Argentina)" msgstr "Spanish (Argentina)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 msgid "Spanish (Costa Rica)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 msgid "Spanish (Mexico)" msgstr "Spanish (Mexico)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 msgid "Spanish (Cuba)" msgstr "Spanish (Cuba)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 msgid "Spanish (Chile)" msgstr "Spanish (Chile)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 msgid "Spanish (Ecuador)" msgstr "Spanish (Ecuador)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 msgid "Spanish (Honduras)" msgstr "Spanish (Honduras)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 msgid "Spanish (Venezuela)" msgstr "Spanish (Venezuela)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 msgid "Spanish (Bolivia)" msgstr "Spanish (Bolivia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 msgid "Spanish (Nicaragua)" msgstr "Spanish (Nicaragua)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 msgid "Spanish (Colombia)" msgstr "Spanish (Colombia)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 msgid "German (AT)" msgstr "German (AT)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 msgid "French (BE)" msgstr "French (BE)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 msgid "Dutch (NL)" msgstr "Dutch (NL)" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "Dutch (BE)" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "AM" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "PM" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "AM" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "PM" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -23911,7 +24197,7 @@ msgid "Unknown feed" msgstr "Unknown feed" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "Untitled article" @@ -23919,111 +24205,111 @@ msgstr "Untitled article" msgid "Unknown News Source" msgstr "Unknown News Source" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "The \"%s\" recipe needs a username and password." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "Download finished" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "Failed to download the following articles:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "Failed to download parts of the following articles:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr " from " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "\tFailed links:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "Could not fetch article." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "The debug traceback is available earlier in this log" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "Run with -vv to see the reason" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "Fetching feeds..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "Got feeds from index page" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "Trying to download cover..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "Generating masthead..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "Starting download [%d thread(s)]..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "Feeds downloaded to %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "Could not download cover: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "Downloading cover from %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "Masthead image downloaded" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "Articles in this issue: " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "Untitled Article" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "Article downloaded: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "Article download failed: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "Fetching feed" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 msgid "" "Failed to log in, check your username and password for the calibre " "Periodicals service." @@ -24031,7 +24317,7 @@ msgstr "" "Failed to log in, check your username and password for the calibre " "Periodicals service." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -24078,7 +24364,7 @@ msgstr "Sections" msgid "Articles" msgstr "Articles" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" @@ -24088,12 +24374,12 @@ msgstr "" "\n" "Where URL is for example http://google.com" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "Base directory into which URL is saved. Default is %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " @@ -24102,7 +24388,7 @@ msgstr "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " @@ -24111,7 +24397,7 @@ msgstr "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " @@ -24129,7 +24415,7 @@ msgstr "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." @@ -24137,7 +24423,7 @@ msgstr "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " @@ -24147,7 +24433,7 @@ msgstr "" "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." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -24159,7 +24445,7 @@ msgstr "" "a link, it will be ignored. By default, no links are ignored. If both filter " "regexp and match regexp are specified, then filter regexp is applied first." -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "Do not download CSS stylesheets." @@ -24167,10 +24453,6 @@ msgstr "Do not download CSS stylesheets." msgid "OK" msgstr "OK" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "Save" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "Open" diff --git a/src/calibre/translations/eo.po b/src/calibre/translations/eo.po index eeca5bf04a..f9def3b4c1 100644 --- a/src/calibre/translations/eo.po +++ b/src/calibre/translations/eo.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" "PO-Revision-Date: 2012-08-03 13:00+0000\n" "Last-Translator: Cyril \n" "Language-Team: Esperanto \n" @@ -15,19 +15,22 @@ 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: 2013-03-16 04:38+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-03-30 05:10+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:56 msgid "Does absolutely nothing" msgstr "Faras absolute nenion" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -50,8 +53,8 @@ msgstr "Faras absolute nenion" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -81,9 +84,9 @@ msgstr "Faras absolute nenion" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -114,7 +117,7 @@ msgstr "Faras absolute nenion" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -151,7 +154,7 @@ msgstr "Faras absolute nenion" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -178,19 +181,19 @@ msgstr "Faras absolute nenion" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -967,8 +970,8 @@ msgstr "Ŝalti la indikitan kromprogramon" msgid "Disable the named plugin" msgstr "Malŝalti la indikitan kromprogramon" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -978,7 +981,7 @@ msgstr "Malŝalti la indikitan kromprogramon" msgid "Path to library too long. Must be less than %d characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -993,25 +996,25 @@ msgstr "" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1030,7 +1033,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "" @@ -1266,8 +1269,8 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "" @@ -1942,7 +1945,7 @@ msgid "Communicate with the Ex124G" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" +msgid "Communicate with the WayteQ and SPC Dickens Readers" msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 @@ -2565,7 +2568,7 @@ msgid "" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2591,29 +2594,29 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2621,37 +2624,37 @@ msgid "" "%(dis)s options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 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:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "" @@ -2834,13 +2837,13 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -2848,7 +2851,7 @@ msgid "" "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4184,20 +4187,23 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4218,7 +4224,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -4359,52 +4365,52 @@ msgstr "" msgid "Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 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:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" @@ -4520,9 +4526,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -4632,7 +4638,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -4771,22 +4777,29 @@ msgstr "" msgid "Smartened punctuation in: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -5325,6 +5338,21 @@ msgstr "" msgid "Select destination for %(title)s.%(fmt)s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -5608,12 +5636,11 @@ msgstr "" msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "" @@ -5718,7 +5745,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -6353,14 +6380,17 @@ msgid "You must select at least one action before saving" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "" @@ -7101,7 +7131,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -7169,18 +7199,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:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "" - -#: /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?" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "" @@ -7235,7 +7254,7 @@ msgid "Path" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "" @@ -7256,7 +7275,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -7280,7 +7299,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -7299,7 +7318,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -7323,7 +7342,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -7400,78 +7419,106 @@ msgstr "" msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -7479,77 +7526,128 @@ msgstr "" msgid "Name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -7557,102 +7655,103 @@ msgid "" "[Test book], and '+', the default tag for a read book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "" @@ -8988,7 +9087,7 @@ msgid "" "Add button to add it to the list of expressions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "" @@ -9055,6 +9154,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "" @@ -9110,30 +9210,48 @@ msgstr "" msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" @@ -9317,11 +9435,11 @@ msgid "" "href=\"http://manual.calibre-ebook.com/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "" @@ -9939,6 +10057,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "" @@ -9947,16 +10075,16 @@ msgstr "" msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "" @@ -10454,6 +10582,10 @@ msgid "" "Books." msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -10817,10 +10949,6 @@ msgstr "" msgid "Search/replace name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -11041,11 +11169,6 @@ msgstr "" msgid "Sa&ve" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "" @@ -11538,7 +11661,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "" @@ -12939,46 +13062,46 @@ msgstr "" msgid "Clear the font family" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " 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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "" @@ -13249,14 +13372,6 @@ msgstr "" msgid "This book's UUID is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -13446,57 +13561,57 @@ msgid "" "Path to Calibre Portable (%s) too long. Must be less than 59 characters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -13504,60 +13619,60 @@ msgid "" "successful. If you say No, a new empty calibre library will be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "" @@ -13986,11 +14101,6 @@ msgstr "" msgid " [%(num)d of %(tot)d]" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -14725,28 +14835,28 @@ msgid "" "started.

You can change an existing rule by double clicking it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "" @@ -15271,68 +15381,68 @@ msgid "" "plugin. calibre cannot detect devices that are managed by disabled plugins." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "" @@ -17521,11 +17631,23 @@ msgstr "" msgid "First letter is usable only when sorting by name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:112 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:113 msgid "Select a destination for the Table of Contents entry" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:130 +msgid "Search for text..." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:132 +msgid "Find &next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:135 +msgid "Find &previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:143 msgid "" "Here you can choose a destination for the Table of Contents' entry to point " "to. First choose a file from the book in the left-most panel. The file will " @@ -17536,59 +17658,164 @@ msgid "" "when you click." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:156 msgid "&Name of the ToC entry:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:162 msgid "Currently selected destination:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:230 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:196 +msgid "No match found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:186 +#, python-format +msgid "No match found for: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:192 +#, python-format +msgid "" +"No matches for %(text)s found in the current file [%(current)s]. Do you want " +"to search in the %(which)s file [%(next)s]?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "next" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:195 +msgid "previous" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:281 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:286 msgid "File:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:270 msgid "Top of the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:339 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:354 -msgid "(Untitled)" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:272 #, python-format msgid "Approximately %d%% from the top" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:278 #, python-format msgid "Location: A <%s> tag inside the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:34 +msgid "Create ToC from XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:38 +msgid "" +"Specify a series of XPath expressions for the different levels of the Table " +"of Contents. You can use the wizard buttons to help you create XPath " +"expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:45 +#, python-format +msgid "Level %s ToC:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:54 +msgid "&Save settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:56 +msgid "&Load settings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:67 +msgid "No XPaths" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:68 +msgid "No XPaths have been entered" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:107 +#, python-format +msgid "The XPath expression %s is not valid." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:146 msgid "" "You can edit existing entries in the Table of Contents by clicking them in " "the panel to the left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:148 msgid "" "Entries with a green tick next to them point to a location that has been " "verified to exist. Entries with a red dot are broken and may need to be " "fixed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:156 msgid "Create a &new entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:161 +msgid "Generate ToC from &major headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:164 +msgid "" +"Generate a Table of Contents from the major headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +"

,

and

tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:168 +msgid "Generate ToC from &all headings" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +msgid "" +"Generate a Table of Contents from all the headings in the book. This will " +"work if the book identifies its headings using HTML heading tags. Uses the " +" tags." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:176 +msgid "Generate ToC from &links" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:179 +msgid "" +"Generate a Table of Contents from all the links in the book. Links that " +"point to destinations that do not exist in the book are ignored. Also " +"multiple links with the same destination or the same text are ignored." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:186 +msgid "Generate ToC from &XPath" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:189 +msgid "Generate a Table of Contents from arbitrary XPath expressions." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:193 +msgid "Flatten the ToC" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:196 +msgid "Flatten the Table of Contents, putting all entries at the top level" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:202 msgid "" "WARNING: calibre only supports the creation of linear ToCs in AZW3 " "files. In a linear ToC every entry must point to a location after the " @@ -17596,113 +17823,134 @@ msgid "" "arranged inside the AZW3 file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:79 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 msgid "" "You can move this entry around the Table of Contents by drag and drop or " "using the up and down buttons to the left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:100 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:239 msgid "Change the &location this entry points to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:104 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:243 msgid "&Remove this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:114 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:253 msgid "New entry &inside this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:256 msgid "New entry &above this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:259 msgid "New entry &below this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:263 msgid "&Flatten this entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:265 msgid "" "All children of this entry are brought to the same level as this entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:276 +msgid "&Return to welcome screen" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:278 +msgid "Go back to the top level view" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:328 msgid "This entry points to an existing destination" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:331 msgid "The location this entry points to does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:369 msgid "Move current entry up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:375 msgid "Remove all selected entries" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:224 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:381 msgid "Move current entry down" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:226 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:383 msgid "&Expand all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:230 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:387 msgid "&Collapse all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:233 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:390 msgid "Double click on an entry to change the text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:330 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:515 msgid "Title: {0} Dest: {1}{2}" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:546 #, python-format msgid "" "The location this entry point to does not exist:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:450 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:636 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:643 +msgid "No items found" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:637 +msgid "No items were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:644 +msgid "No links were found that could be added to the Table of Contents." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:661 #, python-format msgid "Edit the ToC in %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:677 #, python-format msgid "Loading %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:712 #, python-format msgid "Writing %s, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:720 msgid "Failed to write book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:721 #, python-format msgid "Could not write %s. Click \"Show details\" for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:758 msgid "Failed to load book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:759 #, python-format msgid "Could not load %s. Click \"Show details\" for more information." msgstr "" @@ -17712,11 +17960,11 @@ msgstr "" msgid "Convert book %(num)d of %(total)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:102 msgid "Could not convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:98 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:103 #, python-format msgid "" "Could not convert %s as it has no ebook files. If you think it should " @@ -17725,56 +17973,56 @@ msgid "" "those files and re-add them to calibre." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:113 #, python-format msgid "No supported formats (Available formats: %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:111 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 msgid "This book has no actual ebook files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:247 msgid "Could not convert some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:117 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:122 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no supported source " "formats were found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:156 msgid "Queueing books for bulk conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:221 msgid "Queueing " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:222 #, python-format msgid "Convert book %(num)d of %(tot)d (%(title)s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:248 #, python-format msgid "" "Could not convert %(num)d of %(tot)d books, because no suitable source " "format was found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:288 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:293 msgid "Fetch news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:366 msgid "Convert existing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:367 #, python-format msgid "" "The following books have already been converted to %s format. Do you wish to " @@ -19158,7 +19406,7 @@ msgid "" "ipad-iphone-ipod-touch\">the User Manual for more information." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:36 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:37 #, python-format msgid "" "The fields to output when cataloging books in the database. Should be a " @@ -19170,7 +19418,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:49 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:50 #, python-format msgid "" "Output field to sort on.\n" @@ -19179,7 +19427,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:58 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:59 #, python-format msgid "" "Create a citation for BibTeX entries.\n" @@ -19188,7 +19436,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:67 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:68 #, python-format msgid "" "Create a file entry if formats is selected for BibTeX entries.\n" @@ -19197,7 +19445,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:76 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:77 #, python-format msgid "" "The template for citation creation from database fields.\n" @@ -19207,7 +19455,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:86 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:87 #, python-format msgid "" "BibTeX file encoding output.\n" @@ -19216,7 +19464,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:95 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:96 #, python-format msgid "" "BibTeX file encoding flag.\n" @@ -19225,7 +19473,7 @@ msgid "" "Applies to: BIBTEX output format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:104 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/bibtex.py:105 #, python-format msgid "" "Entry type for BibTeX catalog.\n" @@ -19403,12 +19651,21 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:169 #, python-format msgid "" +"Use a named preset created with the GUI Catalog builder.\n" +"A preset specifies all settings for building a catalog.\n" +"Default: '%default'\n" +"Applies to AZW3, ePub, MOBI output formats" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:177 +#, python-format +msgid "" "Replace existing cover when generating the catalog.\n" "Default: '%default'\n" "Applies to: AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:176 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:184 #, python-format msgid "" "Size hint (in inches) for book covers in catalog.\n" @@ -19417,7 +19674,21 @@ msgid "" "Applies to AZW3, ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:288 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:200 +#, python-format +msgid "Error: Preset \"%s\" not found." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:201 +#, python-format +msgid "Stored presets: %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:203 +msgid "Error: No stored presets." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi.py:333 msgid "" "\n" "*** Adding 'By Authors' Section required for MOBI output ***" @@ -19440,7 +19711,7 @@ msgid "No books available to catalog" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:304 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2475 msgid "Titles" msgstr "" @@ -19449,12 +19720,12 @@ msgid "Genres" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:310 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1779 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1778 msgid "Recently Added" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:312 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1978 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1977 msgid "Recently Read" msgstr "" @@ -19488,103 +19759,103 @@ msgstr "" msgid "No books available to include in catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2059 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2058 msgid "Genres HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2456 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2455 msgid "Titles HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2653 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2655 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2657 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2652 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2654 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2656 msgid "by " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2794 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2793 msgid "Descriptions HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2798 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2797 msgid "Description HTML" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2931 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2930 msgid "NCX header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3008 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3007 msgid "NCX for Descriptions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3135 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3134 msgid "NCX for Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3220 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3219 #, python-format msgid "Series beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3222 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3221 #, python-format msgid "Series beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3266 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3265 msgid "NCX for Titles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3353 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3352 #, python-format msgid "Titles beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3355 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3354 #, python-format msgid "Titles beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3397 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3396 msgid "NCX for Authors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3476 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3475 #, python-format msgid "Authors beginning with %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3478 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3477 #, python-format msgid "Authors beginning with '%s'" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3519 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3518 msgid "NCX for Recently Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3712 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3711 msgid "NCX for Recently Read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3854 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3853 msgid "NCX for Genres" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3979 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:3978 msgid "Generating OPF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4356 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4355 msgid "Thumbnails" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4362 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4361 msgid "Thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4896 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4901 msgid "Saving NCX" msgstr "" @@ -19681,7 +19952,7 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/cli.py:169 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1261 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." @@ -19884,17 +20155,23 @@ msgstr "" msgid "You must specify either a field or an opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:599 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:596 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:877 +#, python-format +msgid "No book with id: %s in the database" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 #, python-format msgid "The OPF file %s does not exist" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:612 #, python-format msgid "%s is not a known field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:639 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:642 msgid "" "%prog export [options] ids\n" "\n" @@ -19905,28 +20182,28 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:647 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:650 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:652 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:651 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:661 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:681 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:684 #, python-format msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:694 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:697 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -19937,13 +20214,13 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:703 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:706 msgid "" "This column stores tag like data (i.e. multiple comma separated values). " "Only applies if datatype is text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:707 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted. This is a JSON string. For enumeration columns, use --" @@ -19963,11 +20240,11 @@ msgid "" "JSON for the\"display\" for the new column in the OPF." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:739 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:799 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:802 msgid "" "\n" " %prog catalog /path/to/destination.(CSV|EPUB|MOBI|XML ...) [options]\n" @@ -19978,30 +20255,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:812 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:815 msgid "" "Comma-separated list of database IDs to catalog.\n" "If declared, --search is ignored.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:816 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:819 msgid "" "Filter the results by the search query. For the format of the search query, " "please see the search-related documentation in the User Manual.\n" "Default: no filtering" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:822 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:552 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:825 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:601 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:836 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:839 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:891 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -20013,17 +20290,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:895 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:901 msgid "" "If the column stores multiple values, append the specified values to the " "existing ones, instead of replacing them." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:906 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:912 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:926 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 msgid "" "\n" " %prog custom_columns [options]\n" @@ -20032,20 +20309,27 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:932 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:938 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:944 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:950 #, python-format -msgid "You will lose all data in the column: %r. Are you sure (y/n)? " +msgid "You will lose all data in the column: %s. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:946 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:952 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:953 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:957 +#, python-format +msgid "" +"No column named %s found. You must use column labels, not titles. Use " +"calibredb custom_columns to get a list of labels." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/cli.py:964 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -20055,15 +20339,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:960 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:971 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:970 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:981 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:992 msgid "" "\n" " %prog saved_searches [options] list\n" @@ -20076,40 +20360,40 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:998 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1009 msgid "Error: You must specify an action (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1006 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1017 msgid "Name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1007 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1018 msgid "Search string:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1013 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 msgid "Error: You must specify a name and a search string" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1016 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1027 msgid "added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1021 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1032 msgid "Error: You must specify a name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1024 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 msgid "removed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1028 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1039 #, python-format msgid "Error: Action %s not recognized, must be one of: (add|remove|list)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1035 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 msgid "" "%prog backup_metadata [options]\n" "\n" @@ -20123,13 +20407,13 @@ msgid "" "automatically, every time metadata is changed.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1046 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1057 msgid "" "Normally, this command only operates on books that have out of date OPF " "files. This option makes it operate on all books." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1085 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1096 msgid "" "%prog check_library [options]\n" "\n" @@ -20137,34 +20421,34 @@ msgid "" "{0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1092 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 msgid "Output in CSV" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1095 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1106 msgid "" "Comma-separated list of reports.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1099 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1110 msgid "" "Comma-separated list of extensions to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1103 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1114 msgid "" "Comma-separated list of names to ignore.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1133 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1144 msgid "Unknown report check" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1167 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1178 msgid "" "%prog restore_database [options]\n" "\n" @@ -20179,18 +20463,18 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1181 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1192 msgid "" "Really do the recovery. The command will not run unless this option is " "specified." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1194 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1205 #, python-format msgid "You must provide the %s option to do a recovery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1231 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1242 msgid "" "%prog list_categories [options]\n" "\n" @@ -20198,33 +20482,33 @@ msgid "" "information is the equivalent of what is shown in the tags pane.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1239 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1250 msgid "" "Output only the number of items in a category instead of the counts per item " "within the category" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1244 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1255 msgid "" "The character to put around the category value in CSV mode. Default is " "quotes (\")." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1258 msgid "" "Comma-separated list of category lookup names.\n" "Default: all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1253 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1264 msgid "The string used to separate fields in CSV mode. Default is a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1291 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1302 msgid "CATEGORY ITEMS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:1364 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:1375 #, python-format msgid "" "%%prog command [options] [arguments]\n" @@ -20261,17 +20545,17 @@ msgstr "" msgid " (%s books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3669 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3685 #, python-format msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3698 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3714 #, python-format msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3715 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3731 msgid "Compacting database" msgstr "" @@ -21544,194 +21828,198 @@ msgid "English (Pakistan)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:162 -msgid "English (Croatia)" +msgid "English (Poland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:163 -msgid "English (Hong Kong)" +msgid "English (Croatia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:164 -msgid "English (Hungary)" +msgid "English (Hong Kong)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:165 -msgid "English (Indonesia)" +msgid "English (Hungary)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:166 -msgid "English (Israel)" +msgid "English (Indonesia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:167 -msgid "English (Russia)" +msgid "English (Israel)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:168 -msgid "English (Singapore)" +msgid "English (Russia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:169 -msgid "English (Yemen)" +msgid "English (Singapore)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:170 -msgid "English (Ireland)" +msgid "English (Yemen)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:171 -msgid "English (China)" +msgid "English (Ireland)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:172 -msgid "English (South Africa)" +msgid "English (China)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:173 -msgid "Spanish (Paraguay)" +msgid "English (South Africa)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:174 -msgid "Spanish (Uruguay)" +msgid "Spanish (Paraguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:175 -msgid "Spanish (Argentina)" +msgid "Spanish (Uruguay)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:176 -msgid "Spanish (Costa Rica)" +msgid "Spanish (Argentina)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:177 -msgid "Spanish (Mexico)" +msgid "Spanish (Costa Rica)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:178 -msgid "Spanish (Cuba)" +msgid "Spanish (Mexico)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:179 -msgid "Spanish (Chile)" +msgid "Spanish (Cuba)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:180 -msgid "Spanish (Ecuador)" +msgid "Spanish (Chile)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:181 -msgid "Spanish (Honduras)" +msgid "Spanish (Ecuador)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:182 -msgid "Spanish (Venezuela)" +msgid "Spanish (Honduras)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:183 -msgid "Spanish (Bolivia)" +msgid "Spanish (Venezuela)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:184 -msgid "Spanish (Nicaragua)" +msgid "Spanish (Bolivia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:185 -msgid "Spanish (Colombia)" +msgid "Spanish (Nicaragua)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:186 -msgid "German (AT)" +msgid "Spanish (Colombia)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:187 -msgid "French (BE)" +msgid "German (AT)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:188 -msgid "Dutch (NL)" +msgid "French (BE)" msgstr "" #: /home/kovid/work/calibre/src/calibre/utils/localization.py:189 +msgid "Dutch (NL)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:190 msgid "Dutch (BE)" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 AM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:197 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:198 msgid "AM" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 PM) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:199 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:200 msgid "PM" msgstr "" #. NOTE: Ante Meridian (i.e. like 10:00 am) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:201 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:202 msgid "am" msgstr "" #. NOTE: Post Meridian (i.e. like 10:00 pm) -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:203 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 msgid "pm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:204 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 msgid "&Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:205 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 msgid "Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:206 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 msgid "&Select All" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:207 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 msgid "Copy &Link location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:208 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 msgid "&Undo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:209 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 msgid "&Redo" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:210 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 msgid "Cu&t" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:211 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 msgid "&Paste" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:212 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 msgid "Paste and Match Style" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:213 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 msgid "Directions" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:214 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 msgid "Left to Right" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:215 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 msgid "Right to Left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:216 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 msgid "Fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:217 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 msgid "&Step up" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:218 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:219 msgid "Step &down" msgstr "" @@ -21807,7 +22095,7 @@ msgid "Unknown feed" msgstr "" #: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:163 -#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:192 +#: /home/kovid/work/calibre/src/calibre/web/feeds/__init__.py:197 msgid "Untitled article" msgstr "" @@ -21815,117 +22103,117 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:732 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:771 #, python-format msgid "Failed to download %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:828 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:867 #, python-format msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:935 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:982 msgid "Download finished" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:937 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:984 msgid "Failed to download the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:943 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:990 msgid "Failed to download parts of the following articles:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:945 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:992 msgid " from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:947 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:994 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1050 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1097 msgid "Could not fetch article." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1052 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 msgid "The debug traceback is available earlier in this log" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1054 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1101 msgid "Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1099 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1146 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1104 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1151 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1116 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1163 msgid "Trying to download cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1118 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1165 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1198 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1245 #, python-format msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1214 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1261 #, python-format msgid "Feeds downloaded to %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1223 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1270 #, python-format msgid "Could not download cover: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1232 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1279 #, python-format msgid "Downloading cover from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1278 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1325 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1360 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1407 msgid "Articles in this issue: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1432 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1479 msgid "Untitled Article" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1504 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1551 #, python-format msgid "Article downloaded: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1515 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1562 #, python-format msgid "Article download failed: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1532 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1579 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1676 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1723 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:1691 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1738 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." @@ -21970,60 +22258,60 @@ msgstr "" msgid "Articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:529 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:578 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:532 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:581 #, python-format msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:535 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:584 #, python-format msgid "" "Timeout in seconds to wait for a response from the server. Default: %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:538 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:587 #, python-format msgid "" "Maximum number of levels to recurse i.e. depth of links to follow. Default " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:541 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:590 #, python-format msgid "" "The maximum number of files to download. This only applies to files from tags. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:543 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:592 #, python-format msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:545 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:594 msgid "" "The character encoding for the websites you are trying to download. The " "default is to try and guess the encoding." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:547 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:596 msgid "" "Only links that match this regular expression will be followed. This option " "can be specified multiple times, in which case as long as a link matches any " "one regexp, it will be followed. By default all links are followed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:549 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:598 msgid "" "Any link that matches this regular expression will be ignored. This option " "can be specified multiple times, in which case as long as any regexp matches " @@ -22031,7 +22319,7 @@ msgid "" "regexp and match regexp are specified, then filter regexp is applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:551 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:600 msgid "Do not download CSS stylesheets." msgstr "" @@ -22039,10 +22327,6 @@ msgstr "" msgid "OK" msgstr "" -#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 -msgid "Save" -msgstr "" - #: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:664 msgid "Open" msgstr "" diff --git a/src/calibre/translations/es.po b/src/calibre/translations/es.po index f69c37095b..e203e4440a 100644 --- a/src/calibre/translations/es.po +++ b/src/calibre/translations/es.po @@ -10,16 +10,16 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-15 04:12+0000\n" -"PO-Revision-Date: 2013-03-17 18:51+0000\n" -"Last-Translator: dario hereñu \n" +"POT-Creation-Date: 2013-03-29 05:21+0000\n" +"PO-Revision-Date: 2013-04-01 15:42+0000\n" +"Last-Translator: Jellby \n" "Language-Team: Español; Castellano <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-03-18 04:45+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-04-02 05:17+0000\n" +"X-Generator: Launchpad (build 16546)\n" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:540 msgid "" @@ -42,11 +42,14 @@ msgid "Does absolutely nothing" msgstr "No hace absolutamente nada" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:59 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:125 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:128 -#: /home/kovid/work/calibre/src/calibre/db/cache.py:139 -#: /home/kovid/work/calibre/src/calibre/db/write.py:127 -#: /home/kovid/work/calibre/src/calibre/db/write.py:131 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:804 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:126 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:129 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:140 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:667 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:668 +#: /home/kovid/work/calibre/src/calibre/db/write.py:152 +#: /home/kovid/work/calibre/src/calibre/db/write.py:156 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:383 #: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:384 #: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:114 @@ -69,8 +72,8 @@ msgstr "No hace absolutamente nada" #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/comic_input.py:189 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:99 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/fb2_input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:121 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:119 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:122 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/lrf_output.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdb_input.py:27 #: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/pdf_output.py:28 @@ -100,9 +103,9 @@ msgstr "No hace absolutamente nada" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:66 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:122 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:488 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:490 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:492 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:489 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:491 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/mobi.py:493 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1193 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1304 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:44 @@ -133,7 +136,7 @@ msgstr "No hace absolutamente nada" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:162 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/headers.py:201 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader/mobi6.py:618 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:316 +#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/utils.py:317 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer2/indexer.py:463 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:335 #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/main.py:428 @@ -170,7 +173,7 @@ msgstr "No hace absolutamente nada" #: /home/kovid/work/calibre/src/calibre/gui2/device.py:1419 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:71 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/add_empty_book.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:136 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:835 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:381 @@ -197,19 +200,19 @@ msgstr "No hace absolutamente nada" #: /home/kovid/work/calibre/src/calibre/library/database2.py:554 #: /home/kovid/work/calibre/src/calibre/library/database2.py:562 #: /home/kovid/work/calibre/src/calibre/library/database2.py:573 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2402 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:2853 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3504 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3506 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3643 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2264 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2418 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:2869 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3520 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3522 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3659 #: /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:247 #: /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:190 +#: /home/kovid/work/calibre/src/calibre/utils/localization.py:191 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:45 #: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:53 msgid "Unknown" @@ -1019,8 +1022,8 @@ msgstr "Activar el complemento nombrado" msgid "Disable the named plugin" msgstr "Desactivar el complemento nombrado" -#: /home/kovid/work/calibre/src/calibre/db/backend.py:323 -#: /home/kovid/work/calibre/src/calibre/db/backend.py:332 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:325 +#: /home/kovid/work/calibre/src/calibre/db/backend.py:334 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:324 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_library.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:749 @@ -1032,7 +1035,7 @@ msgstr "" "La ruta a la biblioteca es demasiado larga. Debe tener menos de %d " "caracteres." -#: /home/kovid/work/calibre/src/calibre/db/cache.py:153 +#: /home/kovid/work/calibre/src/calibre/db/cache.py:154 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:666 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:67 #: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:677 @@ -1047,25 +1050,25 @@ msgstr "Sí" msgid "%(tt)sAverage rating is %(rating)3.1f" msgstr "%(tt)sCalificación promedio es %(rating)3.1f" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:234 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:237 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1187 msgid "Main" msgstr "Principal" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:236 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:239 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:77 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1189 msgid "Card A" msgstr "Tarjeta A" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:238 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:241 #: /home/kovid/work/calibre/src/calibre/gui2/layout.py:79 #: /home/kovid/work/calibre/src/calibre/library/database2.py:1191 msgid "Card B" msgstr "Tarjeta B" -#: /home/kovid/work/calibre/src/calibre/db/fields.py:481 -#: /home/kovid/work/calibre/src/calibre/db/fields.py:496 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:484 +#: /home/kovid/work/calibre/src/calibre/db/fields.py:499 #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2826 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:106 #: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:448 @@ -1084,7 +1087,7 @@ msgstr "Tarjeta B" #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/model.py:1229 #: /home/kovid/work/calibre/src/calibre/library/database2.py:339 #: /home/kovid/work/calibre/src/calibre/library/database2.py:352 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3357 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3373 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:187 msgid "News" msgstr "Noticias" @@ -1366,8 +1369,8 @@ msgstr "" "Pulse en \"Mostrar detalles\" para ver una lista." #: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:2827 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3313 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:3331 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3329 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:3347 msgid "Catalog" msgstr "Catálogo" @@ -2132,8 +2135,8 @@ msgid "Communicate with the Ex124G" msgstr "Comunicar con el Ex124G" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:416 -msgid "Communicate with the WayteQ Reader" -msgstr "Comunicar con el lector WayteQ" +msgid "Communicate with the WayteQ and SPC Dickens Readers" +msgstr "Comunicar con los lectores WayteQ y SPC Dickens" #: /home/kovid/work/calibre/src/calibre/devices/mtp/base.py:29 msgid "MTP Device" @@ -2847,7 +2850,7 @@ msgstr "" "\n" "%s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:20 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -2897,29 +2900,29 @@ msgstr "" "\n" "Para una documentación completa del sistema de conversión, ver\n" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "INPUT OPTIONS" msgstr "OPCIONES DE ENTRADA" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:102 msgid "OUTPUT OPTIONS" msgstr "OPCIONES DE SALIDA" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:116 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:114 #, python-format msgid "Options to control the processing of the input %s file" msgstr "Opciones para controlar el procesamiento del archivo de entrada %s." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:123 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:121 #, python-format msgid "Options to control the processing of the output %s" msgstr "Opciones para controlar el procesamiento de la salida %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 msgid "Options to control the look and feel of the output" msgstr "Opciones para controlar el aspecto de la salida" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:156 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:154 #, python-format msgid "" "Modify the document text and structure using common patterns. Disabled by " @@ -2930,18 +2933,18 @@ msgstr "" "Desactivado de manera predeterminada. Use %(en)s para activarlo. Las " "acciones individuales pueden desactivarse con las opciones %(dis)s." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:164 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:162 #: /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 "" "Modificar el texto y la estructura del documento utilizando patrones " "definidos por el usuario." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:174 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:172 msgid "Control auto-detection of document structure." msgstr "Control de autodetección de estructura de documento." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:184 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:182 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 " @@ -2951,15 +2954,15 @@ msgstr "" "el archivo de entrada tiene un Índice, se usará éste en lugar del generado " "automáticamente." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:194 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:192 msgid "Options to set metadata in the output" msgstr "Opciones para asignar metadatos en la salida" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:197 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:195 msgid "Options to help with debugging the conversion" msgstr "Opciones para ayudar con la depuración de la conversión" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:226 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:224 msgid "" "List builtin recipe names. You can create an ebook from a builtin recipe " "like this: ebook-convert \"Recipe Name.recipe\" output.epub" @@ -2968,7 +2971,7 @@ msgstr "" "a partir de una fórmula predefinida de esta manera: ebook-convert «Nombre de " "fórmula.recipe» salida.epub" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:341 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:339 msgid "Output saved to" msgstr "Salida guardada en" @@ -3216,7 +3219,7 @@ msgstr "" msgid "for a complete list with descriptions." msgstr "para una lista completa con descripciones." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:33 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." @@ -3224,7 +3227,7 @@ msgstr "" "Hacer una búsqueda en anchura de los enlaces en archivos HTML. Normalmente " "se hace una búsqueda en profundidad." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:40 #, python-format msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" @@ -3235,7 +3238,7 @@ msgstr "" "ser negativo. El valor 0 implica que no se seguirá ningún enlace en el " "archivo HTML raíz. El valor predeterminado es %default." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:48 +#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plugins/html_input.py:49 msgid "" "Normally this input plugin re-arranges all the input files into a standard " "folder hierarchy. Only use this option if you know what you are doing as it " @@ -4957,20 +4960,23 @@ msgstr "Comentarios" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:775 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:186 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:130 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:194 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:229 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:316 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:321 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:323 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:842 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:635 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1132 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 @@ -4991,7 +4997,7 @@ msgstr "Etiquetas" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/create_custom_column.py:70 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:163 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:306 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2305 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:2304 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:140 msgid "Series" msgid_plural "Series" @@ -5161,53 +5167,53 @@ msgstr "" msgid "Cover" msgstr "Portada" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:508 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:514 msgid "Downloads metadata and covers from Amazon" msgstr "Descarga metadatos y portadas de Amazon" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:518 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 msgid "US" msgstr "EE. UU." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:519 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 msgid "France" msgstr "Francia" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:520 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:526 msgid "Germany" msgstr "Alemania" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:521 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:527 msgid "UK" msgstr "Reino Unido" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:522 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:528 msgid "Italy" msgstr "Italia" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:523 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 msgid "Japan" msgstr "Japón" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:524 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 msgid "Spain" msgstr "España" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:525 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:531 msgid "Brazil" msgstr "Brasil" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:529 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:535 msgid "Amazon website to use:" msgstr "Portal de Amazon que se utilizará:" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:530 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:536 msgid "" "Metadata from Amazon will be fetched using this country's Amazon website." msgstr "" "Los metadatos de Amazon se descargarán de la página de Amazon de este país." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:779 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/sources/amazon.py:785 msgid "Amazon timed out. Try again later." msgstr "" "El tiempo de espera de Amazon ha expirado. Vuelva a intentarlo más tarde." @@ -5349,9 +5355,9 @@ msgstr "No hay detalles disponibles" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/writer8/toc.py:15 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1286 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:252 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:344 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:351 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:221 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/toc.py:219 msgid "Table of Contents" @@ -5484,7 +5490,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/main.py:48 #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:431 #: /home/kovid/work/calibre/src/calibre/gui2/actions/toc_edit.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:199 #: /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:267 @@ -5656,22 +5662,29 @@ msgstr "Debe especificar al menos una acción para realizar" msgid "Smartened punctuation in: %s" msgstr "Puntuación corregida en: %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:125 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:131 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:132 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:138 #, python-format msgid "No file named %s exists" msgstr "No existe ningún archivo llamado %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:135 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:142 #, python-format msgid "No HTML file named %s exists" msgstr "No existe ningún archivo HTML llamado %s" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:145 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:152 #, python-format msgid "The anchor %(a)s does not exist in file %(f)s" msgstr "El punto de anclaje %(a)s no existe en el archivo %(f)s" +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/polish/toc.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/location.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:539 +msgid "(Untitled)" +msgstr "(Sin título)" + #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/cover.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:187 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:988 @@ -6257,6 +6270,21 @@ msgstr "Directorio para exportar catálogos" msgid "Select destination for %(title)s.%(fmt)s" msgstr "Seleccionar destino para %(title)s.%(fmt)s" +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 +msgid "Permission denied" +msgstr "Permiso denegado" + +#: /home/kovid/work/calibre/src/calibre/gui2/actions/catalog.py:102 +#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 +#, python-format +msgid "Could not open %s. Is it being used by another program?" +msgstr "No se pudo abrir %s. ¿Lo está usando algún otro programa?" + #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/actions/choose_library.py:142 msgid "No library found" @@ -6568,13 +6596,12 @@ msgstr "No se puede convertir" msgid "Starting conversion of %d book(s)" msgstr "Iniciando la conversión de %d libro(s)" -#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/actions/convert.py:230 msgid "Empty output file, probably the conversion process crashed" msgstr "" "Archivo de salida vacío, probablemente el proceso de conversión falló" #: /home/kovid/work/calibre/src/calibre/gui2/actions/copy_to_library.py:86 -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:221 #, python-format msgid "%(title)s by %(author)s" msgstr "%(title)s por %(author)s" @@ -6685,7 +6712,7 @@ msgstr "" #: /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/columns.py:104 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:93 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/plugins.py:302 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email.py:242 @@ -7392,14 +7419,17 @@ msgid "You must select at least one action before saving" msgstr "Debe seleccionar al menos una acción antes de guardar" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:140 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:71 msgid "Choose name" msgstr "Elegir un nombre" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:72 msgid "Choose a name for these settings" msgstr "Elija un nombre para esta configuración" #: /home/kovid/work/calibre/src/calibre/gui2/actions/polish.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:90 msgid "Remove saved settings" msgstr "Eliminar configuraciones guardadas" @@ -8206,7 +8236,7 @@ msgstr "" "biblioteca de calibre" #: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:71 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:308 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:57 #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:215 @@ -8278,20 +8308,7 @@ msgstr "" "&Varios libros por carpeta. Se supone que cada archivo de libro es un libro " "diferente" -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:223 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 -msgid "Duplicates found!" -msgstr "¡Se han encontrado duplicados!" - -#: /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?" -msgstr "" -"Ya existen libros con el mismo titulo que los siguientes en la base de " -"datos. ¿Añadirlos de todas formas?" - -#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:245 +#: /home/kovid/work/calibre/src/calibre/gui2/auto_add.py:249 #, python-format msgid "Added %(num)d book(s) automatically from %(src)s" msgstr "%(num)d libro(s) añadido(s) automáticamente desde %(src)s" @@ -8346,7 +8363,7 @@ msgid "Path" msgstr "Ruta" #: /home/kovid/work/calibre/src/calibre/gui2/book_details.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 #, python-format msgid "Cover size: %(width)d x %(height)d" msgstr "Tamaño de portada: %(width)d × %(height)d" @@ -8367,7 +8384,7 @@ msgstr "Opciones de BibTeX" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/djvu_input.py:15 @@ -8391,7 +8408,7 @@ msgstr "Opciones específicas para" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex.py:17 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output.py:18 #: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 #: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 @@ -8410,7 +8427,7 @@ msgstr "salida" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_bibtex_ui.py:77 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:345 #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:32 #: /home/kovid/work/calibre/src/calibre/gui2/convert/azw3_output_ui.py:52 #: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:103 @@ -8434,7 +8451,7 @@ msgstr "salida" #: /home/kovid/work/calibre/src/calibre/gui2/convert/search_and_replace_ui.py:145 #: /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:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:70 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:85 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:91 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:87 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:54 @@ -8518,79 +8535,107 @@ msgstr "" msgid "CSV/XML Options" msgstr "Opciones CSV/XML" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:26 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:27 msgid "E-book options" msgstr "Opciones de libro electrónico" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:92 msgid "Catalogs" msgstr "Catálogos" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:101 msgid "Read book" msgstr "Libro leído" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:107 msgid "Wishlist item" msgstr "Deseado" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "any date" msgstr "cualquier fecha" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:133 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 msgid "any value" msgstr "cualquier valor" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:852 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:854 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1142 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1144 msgid "unspecified" msgstr "sin especificar" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:197 msgid "No genres will be excluded" msgstr "No se excluirá ningún género" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:202 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:214 #, python-format msgid "regex error: %s" msgstr "Error en expresión regular: %s" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:211 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:223 msgid "All genres will be excluded" msgstr "Se excluirán todos los géneros" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:697 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:680 +msgid "Delete saved catalog preset" +msgstr "Borrar la configuración de catálogo guardada" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:681 +msgid "The selected saved catalog preset will be deleted. Are you sure?" +msgstr "Se borrará la configuración de catálogo seleccionada. ¿Está seguro?" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:706 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:711 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:716 +msgid "Save catalog preset" +msgstr "Guardar configuración de catálogo" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:707 +msgid "Preset name:" +msgstr "Nombre de configuración:" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 +msgid "You must provide a name." +msgstr "Debe proporcionar un nombre." + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:717 +msgid "" +"That saved preset already exists and will be overwritten. Are you sure?" +msgstr "Esa configuración ya existe y se sobrescribirá. ¿Está seguro?" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:981 #, python-format msgid "Are you sure you want to delete '%s'?" msgstr "¿Está seguro de querer eliminar «%s»?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:983 #, python-format msgid "Are you sure you want to delete rules #%(first)d-%(last)d?" msgstr "" "¿Está seguro de querer borrar las reglas de la %(first)d a la %(last)d?" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:700 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:984 msgid "Delete Rule" msgstr "Eliminar regla" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:612 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4769 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:4768 msgid "False" msgstr "No" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:850 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1140 msgid "True" msgstr "Sí" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:875 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:966 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1167 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1258 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/check_library.py:342 #: /home/kovid/work/calibre/src/calibre/gui2/store/config/chooser/models.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager.py:90 @@ -8598,57 +8643,110 @@ msgstr "Sí" msgid "Name" msgstr "Nombre" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:876 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:968 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1168 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1260 msgid "Field" msgstr "Campo" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:877 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:969 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1169 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1261 msgid "Value" msgstr "Valor" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:967 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:1259 msgid "Prefix" msgstr "Prefijo" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:346 +msgid "Presets" +msgstr "Configuración" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:347 +msgid "Select catalog preset to load" +msgstr "Seleccione una configuración de catálogo para cargar" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:348 +msgid "Save current catalog settings as preset" +msgstr "Guardar la configuración de catálogo actual" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:349 +#: /usr/src/qt-everywhere-opensource-src-4.8.4/src/gui/widgets/qdialogbuttonbox.cpp:661 +msgid "Save" +msgstr "Guardar" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:350 +msgid "Delete current preset" +msgstr "Borrar configuración actual" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:351 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 +msgid "Delete" +msgstr "E&liminar" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:352 msgid "Enabled sections will be included in the generated catalog." msgstr "Las secciones activadas se incluirán en el catálogo generado." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:353 msgid "Included sections" msgstr "Secciones incluidas" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:354 +msgid "List of books, sorted by Author" +msgstr "Lista de libros, ordenada por autor" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:355 msgid "&Authors" msgstr "&Autores" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:356 +msgid "List of books, sorted by Title" +msgstr "Lista de libros, ordenada por título" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:357 msgid "&Titles" msgstr "&Títulos" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:358 +msgid "List of series books, sorted by Series" +msgstr "Lista de libros de series, ordenados por serie" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:359 msgid "&Series" msgstr "&Series" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:360 +msgid "List of books, sorted by Genre" +msgstr "Lista de libros, ordenados por género" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:361 msgid "&Genres" msgstr "&Géneros" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:296 -msgid "Field containing Genre information" -msgstr "Campo que contiene información de género" +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:362 +msgid "Field containing Genres" +msgstr "Campos que contienen géneros" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:363 +msgid "List of books, sorted by date added to calibre" +msgstr "Lista de libros, ordenados por la fecha de incorporación a calibre" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:364 msgid "&Recently Added" msgstr "Añadidos &recientemente" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:365 +msgid "Individual descriptions of books with cover thumbs, sorted by author" +msgstr "" +"Descripciones individuales de los libros con miniaturas de portadas, " +"ordenadas por autor" + +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:366 msgid "&Descriptions" msgstr "&Descripciones" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:299 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:367 msgid "" "The first matching prefix rule applies a prefix to book listings in the " "generated catalog." @@ -8656,11 +8754,11 @@ msgstr "" "La primera regla de prefijo que coincida aplica un prefijo a las listas de " "libros en el catálogo generado." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:368 msgid "Prefixes" msgstr "Prefijos" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:369 msgid "" "Books matching any of the exclusion rules will be excluded from the " "generated catalog. " @@ -8668,11 +8766,11 @@ msgstr "" "Los libros que coincidan con cualquiera de las reglas de exclusión no " "aparecerán en el catálogo generado. " -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:302 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:370 msgid "Excluded books" msgstr "Libros excluidos" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:303 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:371 msgid "" "A regular expression describing genres to be excluded from the generated " "catalog. Genres are derived from the tags applied to your books.\n" @@ -8685,110 +8783,115 @@ msgstr "" "[etiqueta], como «[Prueba]», y «+», que es la etiqueta predeterminada para " "marcar un libro como leído." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:305 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:373 msgid "Excluded genres" msgstr "Géneros excluidos" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:306 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:374 msgid "Genres to &exclude (regex):" msgstr "Géneros a &excluir (regex)" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:307 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:375 msgid "Reset to default" msgstr "Restablecer al valor predeterminado" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:309 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:377 msgid "Results of regex:" msgstr "Resultado de expresión regular:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:310 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:378 msgid "Tags that will be excluded as genres" msgstr "Etiquetas que se excluirán como géneros" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:311 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:379 msgid "Other options" msgstr "Otras opciones" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:312 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:380 msgid "" "Custom column containing additional content to be merged with Comments " -"metadata." +"metadata in Descriptions section." msgstr "" -"Columna personalizada con contenido adicional que se añade a los metadatos " -"de «Comentarios»." +"Columna personalizada que contiene información adicional para agregar a los " +"metadatos de comentarios en la sección Descripciones." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:313 -msgid "Merge additional content before Comments metadata." -msgstr "Unir contenido adicional antes de los metadatos de «Comentarios»." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:381 +msgid "Merge additional content before Comments in Descriptions section." +msgstr "" +"Agregar el contenido adicional antes de los comentarios en la sección " +"Descripciones." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:314 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:382 msgid "&Before" msgstr "&Antes" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:315 -msgid "Merge additional content after Comments metadata." -msgstr "Unir contenido adicional después de los metadatos de «Comentarios»." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:383 +msgid "Merge additional content after Comments in Descriptions section." +msgstr "" +"Agregar el contenido adicional después de los comentarios en la sección " +"Descripciones." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:316 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:384 msgid "&After" msgstr "&Detrás" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:317 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:385 msgid "" -"Separate Comments metadata and additional content with a horizontal rule." +"Separate Comments metadata and additional content with a horizontal rule in " +"Descriptions section." msgstr "" -"Separar los metadatos de «Comentarios» y el contenido adicional con una " -"línea horizontal." +"Separar los metadatos de comentarios y el contenido adicional con una línea " +"horizontal en la sección Descripciones." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:318 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:386 msgid "Include &Separator" msgstr "Incluir &separador" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:387 msgid "&Merge with Comments:" msgstr "&Unir con comentarios:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:320 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:388 msgid "Catalog cover:" msgstr "Portada del catálogo:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:321 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:389 msgid "Generate new cover" msgstr "Generar nueva portada" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:390 msgid "Use existing cover" msgstr "Utilizar portada actual" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:391 msgid "E&xtra Description note:" msgstr "Nota de descripción e&xtra:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:324 -msgid "Custom column source for text to include in Description section." +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:392 +msgid "Custom column source for text to include in Descriptions section." msgstr "" -"Columna personalizada que sirve de origen para el texto que se incluye en la " -"sección «Descripción»." +"Columna personalizada de origen para el texto que se incluirá en la sección " +"Descripciones." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:325 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:393 msgid "&Thumb width:" msgstr "Ancho de la &miniatura:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:326 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:394 msgid "Size hint for cover thumbnails included in Descriptions section." msgstr "" "Medida del tamaño de las miniaturas de las portadas incluidas en la sección " "«Descripción»." -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:327 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:395 msgid " inch" msgstr " pulgadas" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:328 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:396 msgid "Author cross-references:" msgstr "Referencias cruzadas de autores:" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:329 +#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:397 msgid "For books with multiple authors, list each author separately" msgstr "En libros con varios autores, mostrar cada autor por separado" @@ -10210,7 +10313,7 @@ msgstr "" "con el documento de entrada actual. Cuando esté satisfecho con una " "expresión, pulse el botón «Añadir» para añadirla a la lista de expresiones." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:193 msgid "Convert" msgstr "Convertir" @@ -10281,6 +10384,7 @@ msgstr "Comenzar lectura en (expresión XPath):" #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/toc/main.py:106 msgid "Invalid XPath" msgstr "Expresión XPath no válida" @@ -10342,30 +10446,53 @@ msgstr "&Segundo nivel del Índice (expresión XPath):" msgid "Level &3 TOC (XPath expression):" msgstr "&Tercer nivel del Índice (expresión XPath):" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:71 -msgid "Do not add &detected chapters to the Table of Contents" -msgstr "No añadir capítulos &detectados al Índice" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:72 -msgid "Number of &links to add to Table of Contents" -msgstr "Número de &enlaces para añadir al Índice" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:73 -msgid "Chapter &threshold" -msgstr "&Umbral de capítulos" - -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:86 msgid "&Force use of auto-generated Table of Contents" msgstr "&Forzar el uso del Índice generado automáticamente" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:87 +msgid "Do not add &detected chapters to the Table of Contents" +msgstr "No añadir capítulos &detectados al Índice" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:88 +msgid "Number of &links to add to Table of Contents" +msgstr "Número de &enlaces para añadir al Índice" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:89 msgid "TOC &Filter:" msgstr "Fi<ro para el Índice:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:90 +msgid "Chapter &threshold" +msgstr "&Umbral de capítulos" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:91 msgid "Allow &duplicate links when creating the Table of Contents" msgstr "Permitir enlaces &duplicados al crear el Índice" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:92 +msgid "" +"Help with using these options to generate a Table of Contents" +msgstr "" +"Ayuda sobre el uso de estas opciones para generar un Índice" + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:93 +msgid "" +"This option will cause calibre to popup the Table of Contents Editor tool,\n" +" which will allow you to manually edit the Table of Contents, to fix any " +"errors\n" +" caused by automatic generation." +msgstr "" +"Esta opción hace que calibre muestre una ventana con el Editor del Índice,\n" +"que le permitirá editar manualmente el Índice para corregir cualquier\n" +"posible error ocasionado por la generación automática." + +#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:96 +msgid "&Manually fine-tune the ToC after conversion is completed" +msgstr "Ajustar &manualmente el Índice al finalizar la conversión" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "Entrada TXT" @@ -10562,11 +10689,11 @@ msgstr "" "href=\"http://manual.calibre-ebook.com/xpath.html\">Cursillo de " "XPath.

" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:172 msgid "Browse by covers" msgstr "Explorar por portadas" -#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:223 +#: /home/kovid/work/calibre/src/calibre/gui2/cover_flow.py:244 msgid "Cover browser could not be loaded" msgstr "No se pudo cargar el explorador de portadas" @@ -11239,6 +11366,16 @@ msgstr "" msgid "&Tags to set on created book entries:" msgstr "E&tiquetas que se deben poner en los libros creados:" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:50 +#, python-format +msgid "Next [%s]" +msgstr "Siguiente [%s]" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:52 +#, python-format +msgid "Previous [%s]" +msgstr "Anterior [%s]" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:71 msgid "Fit &cover within view" msgstr "Ajustar la &portada a la ventana" @@ -11247,16 +11384,16 @@ msgstr "Ajustar la &portada a la ventana" msgid "My Books" msgstr "Mis libros" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:202 msgid "No help available" msgstr "No hay ayuda disponible" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:191 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:203 msgid "No help available for this output format." msgstr "No hay ayuda disponible para este formato de salida." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:353 msgid "Generate catalog" msgstr "Generar catálogo" @@ -11840,6 +11977,10 @@ msgstr "" "

Puede encontrar novedades sin DRM en Open Books." +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:23 +msgid "Duplicates found!" +msgstr "¡Se han encontrado duplicados!" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/duplicates.py:29 msgid "" "Books with the same titles as the following already exist in calibre. Select " @@ -12242,10 +12383,6 @@ msgstr "Guardar búsqueda/sustitución" msgid "Search/replace name:" msgstr "Nombre de búsqueda/sustitución:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1065 -msgid "You must provide a name." -msgstr "Debe proporcionar un nombre." - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:1070 msgid "" "That saved search/replace already exists and will be overwritten. Are you " @@ -12498,11 +12635,6 @@ msgstr "Guardar la búsqueda/sustitución actual" msgid "Sa&ve" msgstr "&Guardar" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/bookmarkmanager_ui.py:64 -msgid "Delete" -msgstr "E&liminar" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:630 msgid "Search &field:" msgstr "Campo de &búsqueda:" @@ -13032,7 +13164,7 @@ msgstr "Cancelando..." #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/metadata_sources.py:156 #: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:302 -#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1418 +#: /home/kovid/work/calibre/src/calibre/library/catalogs/epub_mobi_builder.py:1417 #: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:113 msgid "Authors" msgstr "Autores" @@ -14581,46 +14713,46 @@ msgstr "Escoger &tipo de letra" msgid "Clear the font family" msgstr "Limpiar tipo de letra" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:108 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:327 msgid "Cover Browser" msgstr "Explorador de portadas" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:113 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:116 msgid "Shift+Alt+B" msgstr "Mayús+Alt+B" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:127 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:130 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:321 msgid "Tag Browser" msgstr "Explorador de etiquetas" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:129 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:132 msgid "Shift+Alt+T" msgstr "Mayús+Alt+T" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:164 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:29 msgid "version" msgstr "versión" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:165 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/main.py:30 msgid "created by Kovid Goyal" msgstr "creado por Kovid Goyal" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:182 msgid "Connected " msgstr "Conectado " -#: /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/init.py:218 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:229 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel_ui.py:296 msgid "Book Details" msgstr "Detalles del libro" -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/init.py:228 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/init.py:231 msgid "Shift+Alt+D" msgstr "Mayús+Alt+D" @@ -14901,14 +15033,6 @@ msgstr "El nombre de búsqueda es «{0}»" msgid "This book's UUID is \"{0}\"" msgstr "El UUID de este libro es «{0}»" -#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:280 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:345 -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:478 -msgid "Permission denied" -msgstr "Permiso denegado" - #: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:987 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:109 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/basic_widgets.py:281 @@ -15108,60 +15232,60 @@ msgstr "" "La ruta a Calibre Portátil (%s) es demasiado larga. Debe tener menos de 59 " "caracteres." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:779 msgid "Calibre Library" msgstr "Biblioteca de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:133 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:134 msgid "Choose a location for your calibre e-book library" msgstr "Escoja una ubicación para su biblioteca de libros de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:142 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 msgid "Failed to create library" msgstr "Error en la creación de la biblioteca" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:144 #, python-format msgid "Failed to create calibre library at: %r." msgstr "Fallo al crear la libreria calibre en: %r." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:220 msgid "Choose a location for your new calibre e-book library" msgstr "Escoja una ubicación para su nueva biblioteca de libros de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:182 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:183 msgid "Initializing user interface..." msgstr "Inicializando la interfaz de usuario..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:213 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 msgid "Repairing failed" msgstr "Reparación fallida" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:215 msgid "The database repair failed. Starting with a new empty library." msgstr "" "La reparación de la base de datos falló. Comenzando con una nueva biblioteca " "vacía." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 msgid "Bad database location" msgstr "Ubicación de la base de datos incorrecta" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 #, python-format msgid "Bad database location %r. calibre will now quit." msgstr "" "Ubicación de la base de datos %r errónea. calibre se cerrará a continuación." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:241 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 #: /home/kovid/work/calibre/src/calibre/gui2/ui.py:542 msgid "Corrupted database" msgstr "Base de datos corrupta" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:242 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:243 #, python-format msgid "" "The library database at %s appears to be corrupted. Do you want calibre to " @@ -15173,7 +15297,7 @@ msgstr "" "completarse correctamente. Si pulsa «No», se creará una nueva biblioteca de " "calibre vacía." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:255 #, python-format msgid "" "Bad database location %r. Will start with a new, empty calibre library" @@ -15181,54 +15305,54 @@ msgstr "" "Ubicación de la base de datos %r errónea. Se comenzará con una biblioteca de " "calibre nueva y vacía" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:264 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 #, python-format msgid "Starting %s: Loading books..." msgstr "Iniciando %s: Cargando libros..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:348 msgid "If you are sure it is not running" msgstr "Si está seguro de que no está ejecutándose" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:351 msgid "may be running in the system tray, in the" msgstr "puede estar en ejecución en la bandeja del sistema, en la" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:352 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:353 msgid "upper right region of the screen." msgstr "zona superior derecha de la pantalla." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:355 msgid "lower right region of the screen." msgstr "zona inferior derecha de la pantalla." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:358 msgid "try rebooting your computer." msgstr "inténtelo después de reiniciar el equipo." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:377 msgid "try deleting the file" msgstr "pruebe a borrar el archivo" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 msgid "Cannot Start " msgstr "No se puede iniciar " -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:364 #, python-format msgid "%s is already running." msgstr "%s ya está ejecutándose." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:385 msgid "No running calibre found" msgstr "No se encontró ningún calibre ejecutándose" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:389 msgid "Shutdown command sent, waiting for shutdown..." msgstr "Orden de apagado enviada, esperando el apagado..." -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:394 msgid "Failed to shutdown running calibre instance" msgstr "No se pudo detener calibre en ejecución" @@ -15699,11 +15823,6 @@ msgstr "Cambiar cómo descarga calibre los metadatos" msgid " [%(num)d of %(tot)d]" msgstr " [%(num)d de %(tot)d]" -#: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:346 -#, python-format -msgid "Could not open %s. Is it being used by another program?" -msgstr "No se pudo abrir %s. ¿Lo está usando algún otro programa?" - #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:359 #: /home/kovid/work/calibre/src/calibre/gui2/metadata/single.py:369 msgid "Could not read cover" @@ -16551,28 +16670,28 @@ msgstr "" "comenzar.

Puede modificar una regla existente pulsando dos veces " "sobre ella." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:808 msgid "No rule selected" msgstr "No hay ninguna regla seleccionada" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:807 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:809 #, python-format msgid "No rule selected for %s." msgstr "No se seleccionó ninguna regla para %s." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/coloring.py:814 msgid "removal" msgstr "borrar" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:96 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:98 msgid "You must select a column to delete it" msgstr "Debe seleccionar una columna para borrarla" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 msgid "The selected column is not a custom column" msgstr "La columna seleccionada no es una columna personalizada" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/columns.py:105 #, python-format msgid "Do you really want to delete column %s and all its data?" msgstr "¿Seguro que quiere borrar la columna %s y todos sus datos?" @@ -17192,68 +17311,68 @@ msgstr "" "entrada para activar el complemento. calibre no puede detectar dispositivos " "gestionados por complementos desactivados." -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Narrow" msgstr "Estrecho" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:103 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 msgid "Wide" msgstr "Ancho" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "Calibre style" msgstr "Estilo de calibre" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:105 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:107 msgid "System default" msgstr "Predeterminado del sistema" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Off" msgstr "Apagado" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:145 msgid "Small" msgstr "Pequeño" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Large" msgstr "Grande" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:146 msgid "Medium" msgstr "Medio" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "Always" msgstr "Siempre" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:147 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:149 msgid "If there is enough room" msgstr "Si hay suficiente espacio" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:150 msgid "Never" msgstr "Nunca" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 #: /home/kovid/work/calibre/src/calibre/gui2/tag_browser/view.py:594 msgid "By first letter" msgstr "Por la primera letra" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:153 msgid "Disabled" msgstr "Desactivado" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:154 msgid "Partitioned" msgstr "Particionado" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:187 msgid "Column coloring" msgstr "Coloreado de columna" -#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/preferences/look_feel.py:192 msgid "Column icons" msgstr "Iconos de columna" @@ -18277,7 +18396,7 @@ msgid "" "of a search term by changing the value box then pressing Save." msgstr "" "Guardar el término de búsqueda actual. Puede cambiar el nombre de un\n" -"término de busqueda modificando el nombre y pulsando «Guardar». Puede\n" +"término de búsqueda modificando el nombre y pulsando «Guardar». Puede\n" "cambiar el valor modificando el valor y pulsando «Guardar»." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:189 @@ -18325,19 +18444,19 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:200 msgid "Similar authors: " -msgstr "Autores parecidos: " +msgstr "Autores similares: " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:201 msgid "Similar series: " -msgstr "Series parecidas: " +msgstr "Series similares: " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:202 msgid "Similar tags: " -msgstr "Etiquetas parecidas: " +msgstr "Etiquetas similares: " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/search_ui.py:203 msgid "Similar publishers: " -msgstr "Editoriales parecidas: " +msgstr "Editoriales similares: " #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:70 @@ -18357,7 +18476,7 @@ msgstr "Gestión automática" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending.py:36 msgid "Cannot change metadata management while a device is connected" msgstr "" -"No se puede cambiar la gestión de metadatos con un dispositivo conectado." +"No se puede cambiar la gestión de metadatos con un dispositivo conectado" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/sending_ui.py:69 msgid "Metadata &management:" @@ -18470,9 +18589,9 @@ msgid "" "having trouble downloading files from the content server, trying removing " "the password." msgstr "" -"

Algunos dispositivos tienen navegadores que no admiten la autenticación. " -"Si tiene problemas para descargar archivos del servidor de contenidos, " -"pruebe a eliminar la contraseña." +"

Algunos dispositivos tienen navegadores que no admiten autenticación. Si " +"tiene problemas para descargar archivos del servidor de contenidos, pruebe a " +"eliminar la contraseña." #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:161 msgid "Password incompatible with some devices" @@ -18517,7 +18636,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:168 msgid "Run server &automatically when calibre starts" -msgstr "Ejecutar el servidor &automáticamente al iniciar calibre" +msgstr "Ejecutar el servidor &automáticamente cuando se inicia calibre" #: /home/kovid/work/calibre/src/calibre/gui2/preferences/server_ui.py:169 msgid "View &server logs" @@ -18533,11 +18652,11 @@ msgid "" "running on. If you want to access the server from anywhere in the world, you " "will have to setup port forwarding for it on your router." msgstr "" -"

Acuérdese de dejar calibre corriendo, pues el servidor sólo funciona " -"mientras calibre esté corriendo.\n" +"

Recuerde dejar calibre corriendo, pues el servidor sólo funciona mientras " +"calibre esté corriendo.\n" "

Para conectar con el servidor de calibre desde su dispositivo debe usar " "un URL de la forma http://nombredeequipo:8080. Aquí «nombredeequipo» " -"debe ser un nombre de equipo totalmente cualificado o bien la dirección IP " +"debe ser un nombre de equipo totalmente calificado o bien la dirección IP " "del equipo donde calibre está corriendo. Si quiere poder acceder al servidor " "desde cualquier lugar del mundo, debe configurar el redireccionamiento de " "puertos en el enrutador." @@ -18652,8 +18771,8 @@ msgstr "" " return val\n" " else:\n" " return 'VACÍO'\n" -"Esta función pude invocarse desde cualquiera de los modos de programación de " -"plantilla:\n" +"Esta función puede invocarse desde cualquiera de los modos de programación " +"de plantilla:\n" "