diff --git a/Changelog.yaml b/Changelog.yaml index f23566cb67..9673832a81 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -4,6 +4,45 @@ # for important features/bug fixes. # Also, each release can have new and improved recipes. +- version: 0.7.1 + date: 2010-06-04 + + new features: + - title: "Content server: Add option to control category groupiong in OPDS feeds" + + - title: "Make the book details pane occupy the full lower part of the window" + + - title: "Add true and false searches for date based columns" + tickets: [5717] + + bug fixes: + - title: "iPad driver: Various bug fixes." + + - title: "SONY driver: Fix Launcher partition being detected as storage card in linux" + + - title: "Fix news downloading breaking on windows systems with local encoding other than UTF-8." + + - title: "SONY driver: Fix problem caused by null titles" + + - title: "Make the new splash screen not always stay on top" + tickets: [5700] + + - title: "When setting an image with transparent pixels as the book cover, overlay it on a white background first. Fixes transparent covers getting random backgrounds." + + - title: "Content server: Fix stanza integration when entering the server URL my hand" + + improved recipes: + - Gizmodo + - Vreme + + +- version: 0.7.0 + date: 2010-06-04 + + new features: + - title: "Go to http://calibre-ebook.com/new-in/seven to see what's new in 0.7.0" + type: major + - version: 0.6.55 date: 2010-05-28 diff --git a/resources/images/news/clarin.png b/resources/images/news/clarin.png index f08bc3e5ac..2ef634678e 100644 Binary files a/resources/images/news/clarin.png and b/resources/images/news/clarin.png differ diff --git a/resources/images/news/haaretz_en.png b/resources/images/news/haaretz_en.png new file mode 100644 index 0000000000..56b41baf99 Binary files /dev/null and b/resources/images/news/haaretz_en.png differ diff --git a/resources/recipes/cbc_canada.recipe b/resources/recipes/cbc_canada.recipe new file mode 100644 index 0000000000..26ea6abd29 --- /dev/null +++ b/resources/recipes/cbc_canada.recipe @@ -0,0 +1,25 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1275798572(BasicNewsRecipe): + title = u'CBC Canada' + publisher = 'www.cbc.ca' + language = 'en_CA' + __author__ = 'rty' + category = 'news' + oldest_article = 4 + max_articles_per_feed = 100 + remove_javascript = True + use_embedded_content = False + no_stylesheets = True + language = 'en' + masthead_url = 'http://www.cbc.ca/includes/gfx/cbcnews_logo_09.gif' + cover_url = 'http://img692.imageshack.us/img692/2814/cbc.png' + keep_only_tags = [dict(name='div', attrs={'id':['storyhead','storybody']})] + remove_tags_after = dict(id=['socialtools']) + feeds = [(u'Top Stories', u'http://rss.cbc.ca/lineup/topstories.xml'), + (u'World', u'http://rss.cbc.ca/lineup/world.xml'), + (u'National', u'http://rss.cbc.ca/lineup/canada.xml'), + (u'Manitoba', u'http://rss.cbc.ca/lineup/canada-manitoba.xml'), + (u'Politics', u'http://rss.cbc.ca/lineup/politics.xml'), + (u'Tech & Science', u'http://rss.cbc.ca/lineup/technology.xml'), + (u'Books', u'http://rss.cbc.ca/lineup/arts-books.xml')] diff --git a/resources/recipes/clarin.recipe b/resources/recipes/clarin.recipe index 3a96bca162..7bbb663d1d 100644 --- a/resources/recipes/clarin.recipe +++ b/resources/recipes/clarin.recipe @@ -5,7 +5,6 @@ __copyright__ = '2008-2010, Darko Miletic ' clarin.com ''' -from calibre import strftime from calibre.web.feeds.news import BasicNewsRecipe class Clarin(BasicNewsRecipe): @@ -18,11 +17,12 @@ class Clarin(BasicNewsRecipe): max_articles_per_feed = 100 use_embedded_content = False no_stylesheets = True - cover_url = strftime('http://www.clarin.com/diario/%Y/%m/%d/portada.jpg') - encoding = 'cp1252' - language = 'es' - masthead_url = 'http://www.clarin.com/shared/v10/img/Hd/lg_Clarin.gif' - extra_css = ' body{font-family: Arial,Helvetica,sans-serif} h2{font-family: Georgia,"Times New Roman",Times,serif; font-size: xx-large} .Volan,.Pie,.Autor{ font-size: x-small} .Copete,.Hora{font-size: large} ' + encoding = 'utf8' + language = 'es_AR' + publication_type = 'newspaper' + INDEX = 'http://www.clarin.com' + masthead_url = 'http://www.clarin.com/static/CLAClarin/images/logo-clarin-print.jpg' + extra_css = ' body{font-family: Arial,Helvetica,sans-serif} h2{font-family: Georgia,serif; font-size: xx-large} .hora{font-weight:bold} .hd p{font-size: small} .nombre-autor{color: #0F325A} ' conversion_options = { 'comment' : description @@ -31,27 +31,32 @@ class Clarin(BasicNewsRecipe): , 'language' : language } - remove_tags = [ - dict(name='a' , attrs={'class':'Imp' }) - ,dict(name='div' , attrs={'class':'Perma' }) - ,dict(name='h1' , text='Imprimir' ) - ] + keep_only_tags = [dict(attrs={'class':['hd','mt']})] feeds = [ - (u'Ultimo Momento', u'http://www.clarin.com/diario/hoy/um/sumariorss.xml') - ,(u'El Pais' , u'http://www.clarin.com/diario/hoy/elpais.xml' ) - ,(u'Opinion' , u'http://www.clarin.com/diario/hoy/opinion.xml' ) - ,(u'El Mundo' , u'http://www.clarin.com/diario/hoy/elmundo.xml' ) - ,(u'Sociedad' , u'http://www.clarin.com/diario/hoy/sociedad.xml' ) - ,(u'La Ciudad' , u'http://www.clarin.com/diario/hoy/laciudad.xml' ) - ,(u'Policiales' , u'http://www.clarin.com/diario/hoy/policiales.xml' ) - ,(u'Deportes' , u'http://www.clarin.com/diario/hoy/deportes.xml' ) + (u'Pagina principal', u'http://www.clarin.com/rss/' ) + ,(u'Politica' , u'http://www.clarin.com/rss/politica/' ) + ,(u'Deportes' , u'http://www.clarin.com/rss/deportes/' ) + ,(u'Economia' , u'http://www.clarin.com/economia/' ) + ,(u'Mundo' , u'http://www.clarin.com/rss/mundo/' ) + ,(u'Espectaculos' , u'http://www.clarin.com/rss/espectaculos/') + ,(u'Sociedad' , u'http://www.clarin.com/rss/sociedad/' ) + ,(u'Ciudades' , u'http://www.clarin.com/rss/ciudades/' ) + ,(u'Policiales' , u'http://www.clarin.com/rss/policiales/' ) + ,(u'Internet' , u'http://www.clarin.com/rss/internet/' ) + ,(u'Ciudades' , u'http://www.clarin.com/rss/ciudades/' ) ] def print_version(self, url): - rest = url.partition('-0')[-1] - lmain = rest.partition('.')[0] - lurl = u'http://www.servicios.clarin.com/notas/jsp/clarin/v9/notas/imprimir.jsp?pagid=' + lmain - return lurl + return url + '?print=1' + def get_cover_url(self): + cover_url = None + soup = self.index_to_soup(self.INDEX) + cover_item = soup.find('div',attrs={'class':'bb-md bb-md-edicion_papel'}) + if cover_item: + ap = cover_item.find('a',attrs={'href':'/edicion-impresa/'}) + if ap: + cover_url = self.INDEX + ap.img['src'] + return cover_url diff --git a/resources/recipes/gizmodo.recipe b/resources/recipes/gizmodo.recipe index 6f6e6ae0cf..4233ef66b7 100644 --- a/resources/recipes/gizmodo.recipe +++ b/resources/recipes/gizmodo.recipe @@ -17,7 +17,7 @@ class Gizmodo(BasicNewsRecipe): max_articles_per_feed = 100 no_stylesheets = True encoding = 'utf-8' - use_embedded_content = True + use_embedded_content = False language = 'en' masthead_url = 'http://cache.gawkerassets.com/assets/gizmodo.com/img/logo.png' extra_css = ' body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif} img{margin-bottom: 1em} ' @@ -29,9 +29,11 @@ class Gizmodo(BasicNewsRecipe): , 'language' : language } - remove_attributes = ['width','height'] - remove_tags = [dict(name='div',attrs={'class':'feedflare'})] - remove_tags_after = dict(name='div',attrs={'class':'feedflare'}) + remove_attributes = ['width','height'] + keep_only_tags = [dict(attrs={'class':'content permalink'})] + remove_tags_before = dict(name='h1') + remove_tags = [dict(attrs={'class':'contactinfo'})] + remove_tags_after = dict(attrs={'class':'contactinfo'}) feeds = [(u'Articles', u'http://feeds.gawker.com/gizmodo/full')] diff --git a/resources/recipes/haaretz_en.recipe b/resources/recipes/haaretz_en.recipe new file mode 100644 index 0000000000..4df6b45a3e --- /dev/null +++ b/resources/recipes/haaretz_en.recipe @@ -0,0 +1,57 @@ +__license__ = 'GPL v3' +__copyright__ = '2010, Darko Miletic ' +''' +haaretz.com +''' + +from calibre.web.feeds.news import BasicNewsRecipe + +class Haaretz_en(BasicNewsRecipe): + title = 'Haaretz in English' + __author__ = 'Darko Miletic' + description = 'Haaretz.com, the online edition of Haaretz Newspaper in Israel, and analysis from Israel and the Middle East. Haaretz.com provides extensive and in-depth coverage of Israel, the Jewish World and the Middle East, including defense, diplomacy, the Arab-Israeli conflict, the peace process, Israeli politics, Jerusalem affairs, international relations, Iran, Iraq, Syria, Lebanon, the Palestinian Authority, the West Bank and the Gaza Strip, the Israeli business world and Jewish life in Israel and the Diaspora. ' + publisher = 'haaretz.com' + category = 'news, politics, Israel' + oldest_article = 2 + max_articles_per_feed = 200 + no_stylesheets = True + encoding = 'cp1252' + use_embedded_content = False + language = 'en_IL' + publication_type = 'newspaper' + remove_empty_feeds = True + masthead_url = 'http://www.haaretz.com/images/logos/logoGrey.gif' + extra_css = ' body{font-family: Verdana,Arial,Helvetica,sans-serif } ' + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } + + remove_tags = [dict(name='div', attrs={'class':['rightcol']}),dict(name='table')] + remove_tags_before = dict(name='h1') + remove_tags_after = dict(attrs={'id':'innerArticle'}) + keep_only_tags = [dict(attrs={'id':'content'})] + + + feeds = [ + (u'Opinion' , u'http://www.haaretz.com/cmlink/opinion-rss-1.209234?localLinksEnabled=false' ) + ,(u'Defense and diplomacy' , u'http://www.haaretz.com/cmlink/defense-and-diplomacy-rss-1.208894?localLinksEnabled=false') + ,(u'National' , u'http://www.haaretz.com/cmlink/national-rss-1.208896?localLinksEnabled=false' ) + ,(u'International' , u'http://www.haaretz.com/cmlink/international-rss-1.208898?localLinksEnabled=false' ) + ,(u'Jewish World' , u'http://www.haaretz.com/cmlink/jewish-world-rss-1.209085?localLinksEnabled=false' ) + ,(u'Business' , u'http://www.haaretz.com/cmlink/business-print-rss-1.264904?localLinksEnabled=false' ) + ,(u'Real Estate' , u'http://www.haaretz.com/cmlink/real-estate-print-rss-1.264977?localLinksEnabled=false' ) + ,(u'Features' , u'http://www.haaretz.com/cmlink/features-print-rss-1.264912?localLinksEnabled=false' ) + ,(u'Arts and leisure' , u'http://www.haaretz.com/cmlink/arts-and-leisure-rss-1.286090?localLinksEnabled=false' ) + ,(u'Books' , u'http://www.haaretz.com/cmlink/books-rss-1.264947?localLinksEnabled=false' ) + ,(u'Food and Wine' , u'http://www.haaretz.com/cmlink/food-and-wine-print-rss-1.265034?localLinksEnabled=false' ) + ,(u'Sports' , u'http://www.haaretz.com/cmlink/sports-rss-1.286092?localLinksEnabled=false' ) + ] + + def preprocess_html(self, soup): + for item in soup.findAll(style=True): + del item['style'] + return soup diff --git a/resources/recipes/vreme.recipe b/resources/recipes/vreme.recipe index a54353b78c..197c20f108 100644 --- a/resources/recipes/vreme.recipe +++ b/resources/recipes/vreme.recipe @@ -52,10 +52,12 @@ class Vreme(BasicNewsRecipe): def parse_index(self): articles = [] soup = self.index_to_soup(self.INDEX) - + cover_item = soup.find('div',attrs={'id':'najava'}) + if cover_item: + self.cover_url = self.INDEX + cover_item.img['src'] for item in soup.findAll(['h3','h4']): - description = '' - title_prefix = '' + description = u'' + title_prefix = u'' feed_link = item.find('a') if feed_link and feed_link.has_key('href') and feed_link['href'].startswith('/cms/view.php'): url = self.INDEX + feed_link['href'] @@ -67,7 +69,7 @@ class Vreme(BasicNewsRecipe): ,'url' :url ,'description':description }) - return [(soup.head.title.string, articles)] + return [('Nedeljnik Vreme', articles)] remove_tags = [ dict(name=['object','link']) @@ -76,11 +78,3 @@ class Vreme(BasicNewsRecipe): def print_version(self, url): return url + '&print=yes' - - def get_cover_url(self): - cover_url = None - soup = self.index_to_soup(self.INDEX) - cover_item = soup.find('div',attrs={'id':'najava'}) - if cover_item: - cover_url = self.INDEX + cover_item.img['src'] - return cover_url diff --git a/resources/recipes/welt.recipe b/resources/recipes/welt.recipe index 59d900f53e..89e0d42c09 100644 --- a/resources/recipes/welt.recipe +++ b/resources/recipes/welt.recipe @@ -21,12 +21,16 @@ class weltDe(BasicNewsRecipe): no_stylesheets = True remove_stylesheets = True remove_javascript = True - encoding = 'iso-8859-1' - BasicNewsRecipe.summary_length = 200 + encoding = 'utf-8' + html2epub_options = 'linearize_tables = True\nbase_font_size2=10' + BasicNewsRecipe.summary_length = 100 remove_tags = [dict(id='jumplinks'), dict(id='ad1'), + dict(id='top'), + dict(id='header'), + dict(id='additionalNavWrapper'), dict(id='fullimage_index'), dict(id='additionalNav'), dict(id='printMenu'), @@ -35,6 +39,8 @@ class weltDe(BasicNewsRecipe): dict(id='servicesBox'), dict(id='servicesNav'), dict(id='ad2'), + dict(id='banner_1'), + dict(id='ssoInfoTop'), dict(id='brandingWrapper'), dict(id='links-intern'), dict(id='navigation'), @@ -53,10 +59,22 @@ class weltDe(BasicNewsRecipe): dict(id='xmsg_comment'), dict(id='additionalNavWrapper'), dict(id='imagebox'), + dict(id='footerContainer'), #dict(id=''), dict(name='span'), dict(name='div', attrs={'class':'printURL'}), + dict(name='ul', attrs={'class':'clear mainNavigation inline'}), + dict(name='ul', attrs={'class':'inline'}), + dict(name='ul', attrs={'class':'ubar'}), + dict(name='hr', attrs={'class':'ubar'}), + dict(name='li', attrs={'class':'counter'}), + dict(name='li', attrs={'class':'browseBack'}), + dict(name='li', attrs={'class':'browseNext'}), + dict(name='li', attrs={'class':'selected'}), + dict(name='div', attrs={'class':'floatLeft'}), dict(name='div', attrs={'class':'ad'}), + dict(name='div', attrs={'class':'ftBarLeft'}), + dict(name='div', attrs={'class':'clear additionalNav'}), dict(name='div', attrs={'class':'inlineBox inlineFurtherLinks'}), dict(name='div', attrs={'class':'inlineBox videoInlineBox'}), dict(name='div', attrs={'class':'inlineGallery'}), @@ -65,6 +83,23 @@ class weltDe(BasicNewsRecipe): dict(name='div', attrs={'class':'articleOptions clear'}), dict(name='div', attrs={'class':'noPrint galleryIndex'}), dict(name='div', attrs={'class':'inlineBox inlineTagCloud'}), + dict(name='div', attrs={'class':'clear module writeComment bgColor1'}), + dict(name='div', attrs={'class':'clear module textGallery bgColor1'}), + dict(name='div', attrs={'class':'clear module socialMedia bgColor1'}), + dict(name='div', attrs={'class':'clear module continuativeLinks'}), + dict(name='div', attrs={'class':'moreArtH3'}), + dict(name='div', attrs={'class':'jqmWindow'}), + dict(name='div', attrs={'class':'clear gap4'}), + dict(name='div', attrs={'class':'hidden'}), + dict(name='div', attrs={'class':'advertising'}), + dict(name='div', attrs={'class':'ad adMarginBottom'}), + dict(name='div', attrs={'class':'ad'}), + dict(name='div', attrs={'class':'topLine'}), + dict(name='div', attrs={'class':'toplineH2'}), + dict(name='div', attrs={'class':'headLineH3'}), + dict(name='div', attrs={'class':'print'}), + dict(name='div', attrs={'class':'clear menu'}), + dict(name='div', attrs={'class':'clear galleryContent'}), dict(name='p', attrs={'class':'jump'}), dict(name='a', attrs={'class':'commentLink'}), dict(name='h2', attrs={'class':'jumpHeading'}), @@ -75,7 +110,7 @@ class weltDe(BasicNewsRecipe): dict(name='table', attrs={'class':'textGallery'}), dict(name='li', attrs={'class':'active'})] - remove_tags_after = [dict(id='tw_link_widget')] + remove_tags_after = [dict(name='div', attrs={'class':'clear departmentLine'})] extra_css = ''' h2{font-family:Arial,Helvetica,sans-serif; font-size: x-small; color: #003399;} @@ -87,7 +122,6 @@ class weltDe(BasicNewsRecipe): .photo {font-family:Arial,Helvetica,sans-serif; font-size: x-small; color: #666666;} ''' feeds = [ ('Politik', 'http://welt.de/politik/?service=Rss'), - ('Deutsche Dinge', 'http://www.welt.de/deutsche-dinge/?service=Rss'), ('Wirtschaft', 'http://welt.de/wirtschaft/?service=Rss'), ('Finanzen', 'http://welt.de/finanzen/?service=Rss'), ('Sport', 'http://welt.de/sport/?service=Rss'), @@ -101,4 +135,5 @@ class weltDe(BasicNewsRecipe): def print_version(self, url): - return url.replace ('.html', '.html?print=yes') + return url.replace ('.html', '.html?print=true') + diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index ff4bab6a9a..48f2c0ecec 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -41,6 +41,8 @@ mimetypes.add_type('application/vnd.palm', '.pdb') mimetypes.add_type('application/x-mobipocket-ebook', '.mobi') mimetypes.add_type('application/x-mobipocket-ebook', '.prc') mimetypes.add_type('application/x-mobipocket-ebook', '.azw') +mimetypes.add_type('application/x-cbz', '.cbz') +mimetypes.add_type('application/x-cbr', '.cbr') mimetypes.add_type('image/wmf', '.wmf') guess_type = mimetypes.guess_type import cssutils diff --git a/src/calibre/constants.py b/src/calibre/constants.py index 78ea150821..69bad99723 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -2,7 +2,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = 'calibre' -__version__ = '0.6.55' +__version__ = '0.7.1' __author__ = "Kovid Goyal " import re diff --git a/src/calibre/devices/apple/driver.py b/src/calibre/devices/apple/driver.py index 8d1037bc44..daa42892db 100644 --- a/src/calibre/devices/apple/driver.py +++ b/src/calibre/devices/apple/driver.py @@ -22,10 +22,46 @@ from calibre.devices.errors import UserFeedback from PIL import Image as PILImage if isosx: - import appscript + try: + import appscript + appscript + except: + # appscript fails to load on 10.4 + appscript = None if iswindows: import pythoncom, win32com.client + +class ITUNES(DevicePlugin): + ''' + try: + pythoncom.CoInitialize() + finally: + pythoncom.CoUninitialize() + ''' + + name = 'Apple device interface' + gui_name = 'Apple device' + icon = I('devices/ipad.png') + description = _('Communicate with iBooks through iTunes.') + supported_platforms = ['osx','windows'] + author = 'GRiker' + #: The version of this plugin as a 3-tuple (major, minor, revision) + version = (0, 4, 0) + + OPEN_FEEDBACK_MESSAGE = _( + 'Apple device detected, launching iTunes, please wait ...') + + FORMATS = ['epub'] + + # Product IDs: + # 0x1292:iPhone 3G + # 0x129a:iPad + VENDOR_ID = [0x05ac] + PRODUCT_ID = [0x129a] + BCD = [0x01] + + # iTunes enumerations Sources = [ 'Unknown', 'Library', @@ -43,31 +79,32 @@ if iswindows: 'BMP' ] -class ITUNES(DevicePlugin): + PlaylistKind = [ + 'Unknown', + 'Library', + 'User', + 'CD', + 'Device', + 'Radio Tuner' + ] - name = 'Apple device interface' - gui_name = 'Apple device' - icon = I('devices/ipad.png') - description = _('Communicate with iBooks through iTunes.') - supported_platforms = ['osx','windows'] - author = 'GRiker' - driver_version = '0.2' - - OPEN_FEEDBACK_MESSAGE = _( - 'Apple device detected, launching iTunes, please wait ...') - - FORMATS = ['epub'] - - # Product IDs: - # 0x1292:iPhone 3G - # 0x129a:iPad - VENDOR_ID = [0x05ac] - PRODUCT_ID = [0x129a] - BCD = [0x01] + PlaylistSpecialKind = [ + 'Unknown', + 'Purchased Music', + 'Party Shuffle', + 'Podcasts', + 'Folder', + 'Video', + 'Music', + 'Movies', + 'TV Shows', + 'Books', + ] # Properties cached_books = {} cache_dir = os.path.join(config_dir, 'caches', 'itunes') + ejected = False iTunes= None log = Log() path_template = 'iTunes/%s - %s.epub' @@ -99,16 +136,19 @@ class ITUNES(DevicePlugin): if isosx: if DEBUG: self.log.info( "ITUNES.add_books_to_metadata()") + self._dump_update_list('add_books_to_metadata()') for (j,p_book) in enumerate(self.update_list): - #self.log.info("ITUNES.add_books_to_metadata(): looking for %s" % p_book['lib_book']) + self.log.info("ITUNES.add_books_to_metadata(): looking for %s" % + str(p_book['lib_book'])[-9:]) for i,bl_book in enumerate(booklists[0]): - #self.log.info("ITUNES.add_books_to_metadata(): evaluating %s" % bl_book.library_id) if bl_book.library_id == p_book['lib_book']: booklists[0].pop(i) - #self.log.info("ITUNES.add_books_to_metadata(): removing %s" % p_book['title']) + self.log.info("ITUNES.add_books_to_metadata(): removing %s %s" % + (p_book['title'], str(p_book['lib_book'])[-9:])) break else: - self.log.error(" update_list item '%s' not found in booklists[0]" % p_book['title']) + self.log.error(" update_list item '%s' by %s %s not found in booklists[0]" % + (p_book['title'], p_book['author'],str(p_book['lib_book'])[-9:])) if self.report_progress is not None: self.report_progress(j+1/task_count, _('Updating device metadata listing...')) @@ -136,7 +176,12 @@ class ITUNES(DevicePlugin): # Add new books to booklists[0] for new_book in locations[0]: + if DEBUG: + self.log.info(" adding '%s' by '%s' to booklists[0]" % + (new_book.title, new_book.author)) booklists[0].append(new_book) + if DEBUG: + self._dump_booklist(booklists[0],'after add_books_to_metadata()') def books(self, oncard=None, end_session=True): """ @@ -153,10 +198,10 @@ class ITUNES(DevicePlugin): list of device books. """ - if DEBUG: - self.log.info("ITUNES:books(oncard=%s)" % oncard) - if not oncard: + if DEBUG: + self.log.info("ITUNES:books(oncard=%s)" % oncard) + # Fetch a list of books from iPod device connected to iTunes # Fetch Library|Books @@ -187,7 +232,7 @@ class ITUNES(DevicePlugin): cached_books[this_book.path] = { 'title':book.name(), - 'author':book.artist(), + 'author':[book.artist()], 'lib_book':library_books[this_book.path] if this_book.path in library_books else None } @@ -232,7 +277,8 @@ class ITUNES(DevicePlugin): self.report_progress(1.0, _('finished')) self.cached_books = cached_books if DEBUG: - self._dump_cached_books() + self._dump_booklist(booklist, 'returning from books():') + self._dump_cached_books('returning from books():') return booklist else: return [] @@ -251,34 +297,54 @@ class ITUNES(DevicePlugin): instantiate iTunes if necessary This gets called ~1x/second while device fingerprint is sensed ''' + if appscript is None: + return False if self.iTunes: # Check for connected book-capable device - try: - ''' - names = [s.name() for s in self.iTunes.sources()] - kinds = [str(s.kind()).rpartition('.')[2] for s in self.iTunes.sources()] - self.sources = sources = dict(zip(kinds,names)) - ''' - self.sources = self._get_sources() - if 'iPod' in self.sources: - if DEBUG: - sys.stdout.write('.') - sys.stdout.flush() - return True - else: - if DEBUG: - self.log.info("ITUNES.can_handle(): device ejected") - return False - except: - # iTunes connection failed, probably not running anymore - self.log.error("ITUNES.can_handle(): lost connection to iTunes") + self.sources = self._get_sources() + if 'iPod' in self.sources: + #if DEBUG: + #sys.stdout.write('.') + #sys.stdout.flush() + return True + else: + if DEBUG: + sys.stdout.write('-') + sys.stdout.flush() return False else: - # can_handle() is called once before open(), so need to return True - # to keep things going + # Called at entry + # We need to know if iTunes sees the iPad + # It may have been ejected if DEBUG: - self.log.info("ITUNES:can_handle(): iTunes not yet instantiated") + self.log.info("ITUNES.can_handle()") + + self._launch_iTunes() + self.sources = self._get_sources() + if (not 'iPod' in self.sources) or (self.sources['iPod'] == ''): + attempts = 9 + while attempts: + # If iTunes was just launched, device may not be detected yet + self.sources = self._get_sources() + if (not 'iPod' in self.sources) or (self.sources['iPod'] == ''): + attempts -= 1 + time.sleep(0.5) + if DEBUG: + self.log.warning(" waiting for identified iPad, attempt #%d" % (10 - attempts)) + else: + if DEBUG: + self.log.info(' found connected iPad in iTunes') + break + else: + # iTunes running, but not connected iPad + if DEBUG: + self.log.info(' self.ejected = True') + self.ejected = True + return False + else: + self.log.info(' found connected iPad in sources') + return True def can_handle_windows(self, device_id, debug=False): @@ -292,35 +358,74 @@ class ITUNES(DevicePlugin): :param device_info: On windows a device ID string. On Unix a tuple of ``(vendor_id, product_id, bcd)``. + + iPad implementation notes: + It is necessary to use this method to check for the presence of a connected + iPad, as we have to return True if we can handle device interaction, or False if not. + ''' if self.iTunes: - # Check for connected book-capable device + # We've previously run, so the user probably ejected the device try: - ''' - names = [s.name() for s in self.iTunes.sources()] - kinds = [str(s.kind()).rpartition('.')[2] for s in self.iTunes.sources()] - self.sources = sources = dict(zip(kinds,names)) - ''' + pythoncom.CoInitialize() self.sources = self._get_sources() if 'iPod' in self.sources: if DEBUG: sys.stdout.write('.') sys.stdout.flush() + if DEBUG: + self.log.info('ITUNES.can_handle_windows:\n confirming connected iPad') + self.ejected = False return True else: if DEBUG: - self.log.info("ITUNES.can_handle(): device ejected") + self.log.info("ITUNES.can_handle_windows():\n device ejected") + self.ejected = True return False except: # iTunes connection failed, probably not running anymore - self.log.error("ITUNES.can_handle(): lost connection to iTunes") + + self.log.error("ITUNES.can_handle_windows():\n lost connection to iTunes") return False + finally: + pythoncom.CoUninitialize() else: - # can_handle_windows() is called once before open(), so need to return True - # to keep things going + # This is called at entry + # We need to know if iTunes sees the iPad + # It may have been ejected if DEBUG: - self.log.info("ITUNES:can_handle(): iTunes not yet instantiated") + self.log.info("ITUNES:can_handle_windows():\n Launching iTunes") + + try: + pythoncom.CoInitialize() + self._launch_iTunes() + self.sources = self._get_sources() + if (not 'iPod' in self.sources) or (self.sources['iPod'] == ''): + attempts = 9 + while attempts: + # If iTunes was just launched, device may not be detected yet + self.sources = self._get_sources() + if (not 'iPod' in self.sources) or (self.sources['iPod'] == ''): + attempts -= 1 + time.sleep(0.5) + if DEBUG: + self.log.warning(" waiting for identified iPad, attempt #%d" % (10 - attempts)) + else: + if DEBUG: + self.log.info(' found connected iPad in iTunes') + break + else: + # iTunes running, but not connected iPad + if DEBUG: + self.log.info(' self.ejected = True') + self.ejected = True + return False + else: + self.log.info(' found connected iPad in sources') + finally: + pythoncom.CoUninitialize() + return True def card_prefix(self, end_session=True): @@ -333,8 +438,6 @@ class ITUNES(DevicePlugin): ('place', None) (None, None) ''' - if DEBUG: - self.log.info("ITUNES:card_prefix()") return (None,None) def delete_books(self, paths, end_session=True): @@ -380,12 +483,14 @@ class ITUNES(DevicePlugin): if isosx: self.iTunes.eject(self.sources['iPod']) elif iswindows: - try: - pythoncom.CoInitialize() - self.iTunes = win32com.client.Dispatch("iTunes.Application") - self.iTunes.sources.ItemByName(self.sources['iPod']).EjectIPod() - finally: - pythoncom.CoUninitialize() + if 'iPod' in self.sources: + try: + pythoncom.CoInitialize() + self.iTunes = win32com.client.Dispatch("iTunes.Application") + self.iTunes.sources.ItemByName(self.sources['iPod']).EjectIPod() + + finally: + pythoncom.CoUninitialize() self.iTunes = None self.sources = None @@ -399,6 +504,8 @@ class ITUNES(DevicePlugin): @return: A 3 element list with free space in bytes of (1, 2, 3). If a particular device doesn't have any of these locations it should return -1. + + In Windows, a sync-in-progress blocks this call until sync is complete """ if DEBUG: self.log.info("ITUNES:free_space()") @@ -411,13 +518,19 @@ class ITUNES(DevicePlugin): elif iswindows: if 'iPod' in self.sources: - try: - pythoncom.CoInitialize() - self.iTunes = win32com.client.Dispatch("iTunes.Application") - connected_device = self.sources['iPod'] - free_space = self.iTunes.sources.ItemByName(connected_device).FreeSpace - finally: - pythoncom.CoUninitialize() + + while True: + try: + try: + pythoncom.CoInitialize() + self.iTunes = win32com.client.Dispatch("iTunes.Application") + connected_device = self.sources['iPod'] + free_space = self.iTunes.sources.ItemByName(connected_device).FreeSpace + finally: + pythoncom.CoUninitialize() + break + except: + self.log.error(' waiting for free_space() call to go through') return (free_space,-1,-1) @@ -450,61 +563,11 @@ class ITUNES(DevicePlugin): mounted. The base class within USBMS device.py has a implementation of this function that should serve as a good example for USB Mass storage devices. + + Note that most of the initialization is necessarily performed in can_handle(), as + we need to talk to iTunes to discover if there's a connected iPod ''' - if isosx: - # Launch iTunes if not already running - if DEBUG: - self.log.info("ITUNES:open(): Instantiating iTunes") - - # Instantiate iTunes - running_apps = appscript.app('System Events') - if not 'iTunes' in running_apps.processes.name(): - if DEBUG: - self.log.info( "ITUNES:open(): Launching iTunes" ) - self.iTunes = iTunes= appscript.app('iTunes', hide=True) - iTunes.run() - initial_status = 'launched' - else: - self.iTunes = appscript.app('iTunes') - initial_status = 'already running' - - if DEBUG: - self.log.info( " %s - %s (%s), driver version %s" % - (self.iTunes.name(), self.iTunes.version(), initial_status, self.driver_version)) - - # Init the iTunes source list - ''' - names = [s.name() for s in self.iTunes.sources()] - kinds = [str(s.kind()).rpartition('.')[2] for s in self.iTunes.sources()] - self.sources = dict(zip(kinds,names)) - ''' - self.sources = self._get_sources() - - elif iswindows: - # Launch iTunes if not already running - if DEBUG: - self.log.info("ITUNES:open(): Instantiating iTunes") - - # Instantiate iTunes - try: - pythoncom.CoInitialize() - self.iTunes = win32com.client.Dispatch("iTunes.Application") - if not DEBUG: - self.iTunes.Windows[0].Minimized = True - initial_status = 'launched' - - if DEBUG: - self.log.info( " %s - %s (%s), driver version %s" % - (self.iTunes.Windows[0].name, self.iTunes.Version, initial_status, self.driver_version)) - - # Init the iTunes source list - self.sources = self._get_sources() - - finally: - pythoncom.CoUninitialize() - - # Confirm/create thumbs archive archive_path = os.path.join(self.cache_dir, "thumbs.zip") @@ -545,10 +608,10 @@ class ITUNES(DevicePlugin): self.log.error("ITUNES.remove_books_from_metadata(): '%s' not found in self.cached_book" % path) # Remove from cached_books + self.cached_books.pop(path) if DEBUG: self.log.info("ITUNES.remove_books_from_metadata(): Removing '%s' from self.cached_books" % path) - self.cached_books.pop(path) - + self._dump_cached_books('remove_books_from_metadata()') else: self.log.warning("ITUNES.remove_books_from_metadata(): skipping purchased book, can't remove via automation interface") @@ -573,8 +636,6 @@ class ITUNES(DevicePlugin): If it is called with -1 that means that the task does not have any progress information ''' - if DEBUG: - self.log.info("ITUNES:set_progress_reporter()") self.report_progress = report_progress def settings(self): @@ -582,8 +643,6 @@ class ITUNES(DevicePlugin): Should return an opts object. The opts object should have one attribute `format_map` which is an ordered list of formats for the device. ''' - if DEBUG: - self.log.info("ITUNES.settings()") klass = self if isinstance(self, type) else self.__class__ c = Config('device_drivers_%s' % klass.__name__, _('settings for device drivers')) c.add_opt('format_map', default=self.FORMATS, @@ -600,24 +659,23 @@ class ITUNES(DevicePlugin): if DEBUG: self.log.info("ITUNES:sync_booklists():") if self.update_needed: - self._update_device(msg=self.update_msg) + if DEBUG: + self.log.info(' calling _update_device') + self._update_device(msg=self.update_msg, wait=False) self.update_needed = False # Get actual size of updated books on device if self.update_list: if DEBUG: - self.log.info("ITUNES:sync_booklists()\n update_list:") - for ub in self.update_list: - self.log.info(" '%s' by %s" % (ub['title'], ub['author'])) - + self._dump_update_list(header='sync_booklists()') if isosx: for updated_book in self.update_list: - size_on_device = self._get_device_book_size(updated_book['title'], updated_book['author']) + size_on_device = self._get_device_book_size(updated_book['title'], + updated_book['author'][0]) if size_on_device: for book in booklists[0]: if book.title == updated_book['title'] and \ - book.author[0] == updated_book['author']: - book.size = size_on_device + book.author == updated_book['author']: break else: self.log.error("ITUNES:sync_booklists(): could not update book size for '%s'" % updated_book['title']) @@ -704,16 +762,26 @@ class ITUNES(DevicePlugin): self.problem_msg = _("Some cover art could not be converted.\n" "Click 'Show Details' for a list.") + if DEBUG: + self.log.info("ITUNES.upload_books():") + self._dump_files(files, header='upload_books()') + self._dump_cached_books('upload_books()') + self._dump_update_list('upload_books()') + if isosx: for (i,file) in enumerate(files): path = self.path_template % (metadata[i].title, metadata[i].author[0]) # Delete existing from Library|Books, add to self.update_list # for deletion from booklist[0] during add_books_to_metadata if path in self.cached_books: + if DEBUG: + self.log.info(" adding '%s' by %s to self.update_list" % + (self.cached_books[path]['title'],self.cached_books[path]['author'])) + + # *** Second time a book is updated the author is a list *** self.update_list.append(self.cached_books[path]) if DEBUG: - self.log.info("ITUNES.upload_books():") self.log.info( " deleting existing '%s'" % (path)) self._remove_from_iTunes(self.cached_books[path]) @@ -795,11 +863,36 @@ class ITUNES(DevicePlugin): try: pythoncom.CoInitialize() self.iTunes = win32com.client.Dispatch("iTunes.Application") - lib = self.iTunes.sources.ItemByName('Library') - lib_playlists = [pl.Name for pl in lib.Playlists] - if not 'Books' in lib_playlists: - self.log.error(" no 'Books' playlist in Library") - library_books = lib.Playlists.ItemByName('Books') + + for source in self.iTunes.sources: + if source.Kind == self.Sources.index('Library'): + lib = source + if DEBUG: + self.log.info(" Library source: '%s' kind: %s" % (lib.Name, self.Sources[lib.Kind])) + break + else: + if DEBUG: + self.log.info(" Library source not found") + + if lib is not None: + lib_books = None + for pl in lib.Playlists: + if self.PlaylistKind[pl.Kind] == 'User' and self.PlaylistSpecialKind[pl.SpecialKind] == 'Books': + if DEBUG: + self.log.info(" Books playlist: '%s' special_kind: '%s'" % (pl.Name, self.PlaylistSpecialKind[pl.SpecialKind])) + lib_books = pl + break + else: + if DEBUG: + self.log.error(" no Books playlist found") + + # +# lib = self.iTunes.sources.ItemByName('Library') +# lib_playlists = [pl.Name for pl in lib.Playlists] +# if not 'Books' in lib_playlists: +# self.log.error(" no 'Books' playlist in Library") +# library_books = lib.Playlists.ItemByName('Books') + # for (i,file) in enumerate(files): path = self.path_template % (metadata[i].title, metadata[i].author[0]) @@ -818,10 +911,10 @@ class ITUNES(DevicePlugin): # Add to iTunes Library|Books if isinstance(file,PersistentTemporaryFile): - op_status = library_books.AddFile(file._name) + op_status = lib_books.AddFile(file._name) self.log.info("ITUNES.upload_books():\n iTunes adding '%s'" % file._name) else: - op_status = library_books.AddFile(file) + op_status = lib_books.AddFile(file) self.log.info(" iTunes adding '%s'" % file) if DEBUG: @@ -941,26 +1034,44 @@ class ITUNES(DevicePlugin): return (new_booklist, [], []) # Private methods - def _dump_booklist(self,booklist, header="booklists[0]"): + def _dump_booklist(self, booklist, header=None): ''' ''' - self.log.info() - self.log.info(header) - self.log.info( "%s" % ('-' * len(header))) - for i,book in enumerate(booklist): - self.log.info( "%2d %-25.25s %s" % (i,book.title, book.library_id)) + if header: + msg = '\nbooklist, %s' % header + self.log.info(msg) + self.log.info('%s' % ('-' * len(msg))) + + for book in booklist: + if isosx: + self.log.info("%-40.40s %-30.30s %-10.10s" % + (book.title, book.author, str(book.library_id)[-9:])) + elif iswindows: + self.log.info("%-40.40s %-30.30s" % + (book.title, book.author)) + + def _dump_cached_books(self, header=None): + ''' + ''' + if header: + msg = '\nself.cached_books, %s' % header + self.log.info(msg) + self.log.info( "%s" % ('-' * len(msg))) + if isosx: + for cb in self.cached_books.keys(): + self.log.info("%-40.40s %-30.30s %-10.10s" % + (self.cached_books[cb]['title'], + self.cached_books[cb]['author'], + str(self.cached_books[cb]['lib_book'])[-9:])) + elif iswindows: + for cb in self.cached_books.keys(): + self.log.info("%-40.40s %-30.30s" % + (self.cached_books[cb]['title'], + self.cached_books[cb]['author'])) + self.log.info() - def _dump_cached_books(self): - ''' - ''' - self.log.info("\n%-40.40s %-12.12s" % ('Device Books','In Library')) - self.log.info("%-40.40s %-12.12s" % ('------------','----------')) - for cb in self.cached_books.keys(): - self.log.info("%-40.40s %6.6s" % (self.cached_books[cb]['title'], 'yes' if self.cached_books[cb]['lib_book'] else ' no')) - self.log.info("\n") - - def _hexdump(self, src, length=16): + def _dump_hex(self, src, length=16): ''' ''' FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)]) @@ -973,19 +1084,33 @@ class ITUNES(DevicePlugin): N+=length print result - def _find_device_book(self, cached_book): - ''' - Windows-only method to get a handle to a device book in the current pythoncom session - ''' - SearchField = ['All','Visible','Artists','Titles','Composers','SongNames'] - if iswindows: - dev_books = self.iTunes.sources.ItemByName(self.sources['iPod']).Playlists.ItemByName('Books') - hits = dev_books.Search(cached_book['title'],SearchField.index('Titles')) - if hits: - for hit in hits: - if hit.Artist == cached_book['author']: - return hit - return None + def _dump_files(self, files, header=None): + if header: + msg = '\nfiles passed to %s:' % header + self.log.info(msg) + self.log.info( "%s" % ('-' * len(msg))) + for file in files: + self.log.info(file) + self.log.info() + + def _dump_update_list(self,header=None): + if header: + msg = '\nself.update_list called from %s' % header + self.log.info(msg) + self.log.info( "%s" % ('-' * len(msg))) + + if isosx: + for ub in self.update_list: + self.log.info("%-40.40s %-30.30s %-10.10s" % + (ub['title'], + ub['author'], + str(ub['lib_book'])[-9:])) + elif iswindows: + for ub in self.update_list: + self.log.info("%-40.40s %-30.30s" % + (ub['title'], + ub['author'])) + self.log.info() def _find_library_book(self, cached_book): ''' @@ -996,7 +1121,28 @@ class ITUNES(DevicePlugin): if DEBUG: self.log.info("ITUNES._find_library_book()") self.log.info(" looking for '%s' by %s" % (cached_book['title'], cached_book['author'])) - lib_books = self.iTunes.sources.ItemByName('Library').Playlists.ItemByName('Books') + + for source in self.iTunes.sources: + if source.Kind == self.Sources.index('Library'): + lib = source + if DEBUG: + self.log.info(" Library source: '%s' kind: %s" % (lib.Name, self.Sources[lib.Kind])) + break + else: + if DEBUG: + self.log.info(" Library source not found") + + if lib is not None: + lib_books = None + for pl in lib.Playlists: + if self.PlaylistKind[pl.Kind] == 'User' and self.PlaylistSpecialKind[pl.SpecialKind] == 'Books': + if DEBUG: + self.log.info(" Books playlist: '%s' special_kind: '%s'" % (pl.Name, self.PlaylistSpecialKind[pl.SpecialKind])) + lib_books = pl + break + else: + if DEBUG: + self.log.error(" no Books playlist found") attempts = 9 while attempts: @@ -1034,19 +1180,13 @@ class ITUNES(DevicePlugin): except: zfw = zipfile.ZipFile(archive_path, mode='a') else: - if DEBUG: - if isosx: - self.log.info("ITUNES._generate_thumbnail(): cached thumb found for '%s'" % book.name()) - elif iswindows: - self.log.info("ITUNES._generate_thumbnail(): cached thumb found for '%s'" % book.Name) - return thumb_data if isosx: try: # Resize the cover data = book.artworks[1].raw_data().data - #self._hexdump(data[:256]) + #self._dump_hex(data[:256]) im = PILImage.open(cStringIO.StringIO(data)) scaled, width, height = fit_image(im.size[0],im.size[1], 60, 80) im = im.resize((int(width),int(height)), PILImage.ANTIALIAS) @@ -1073,7 +1213,7 @@ class ITUNES(DevicePlugin): return None # Save the cover from iTunes - tmp_thumb = os.path.join(tempfile.gettempdir(), "thumb.%s" % ArtworkFormat[book.Artwork.Item(1).Format]) + tmp_thumb = os.path.join(tempfile.gettempdir(), "thumb.%s" % self.ArtworkFormat[book.Artwork.Item(1).Format]) book.Artwork.Item(1).SaveArtworkToFile(tmp_thumb) try: # Resize the cover @@ -1099,25 +1239,23 @@ class ITUNES(DevicePlugin): Fetch the size of a book stored on the device ''' if DEBUG: - self.log.info("ITUNES._get_device_book_size():\n looking for title: '%s' author: %s" % (title,author)) + self.log.info("ITUNES._get_device_book_size():\n looking for title: '%s' author: '%s'" % + (title,author)) device_books = self._get_device_books() if isosx: for d_book in device_books: - if DEBUG: - self.log.info(" evaluating title: '%s' author: '%s'" % (d_book.name(), d_book.artist())) if d_book.name() == title and d_book.artist() == author: + if DEBUG: + self.log.info(' found it') return d_book.size() else: - self.log.error("ITUNES._get_device_book_size(): could not find '%s' by '%s' in device_books" % (title,author)) + self.log.error("ITUNES._get_device_book_size():" + " could not find '%s' by '%s' in device_books" % (title,author)) return None elif iswindows: for d_book in device_books: - ''' - if DEBUG: - self.log.info(" evaluating title: '%s' author: '%s'" % (d_book.Name, d_book.Artist)) - ''' if d_book.Name == title and d_book.Artist == author: self.log.info(" found it") return d_book.Size @@ -1127,49 +1265,134 @@ class ITUNES(DevicePlugin): def _get_device_books(self): ''' - Assumes pythoncom wrapper + Assumes pythoncom wrapper for Windows ''' + if DEBUG: + self.log.info("\nITUNES._get_device_books()") + + device_books = [] if isosx: if 'iPod' in self.sources: connected_device = self.sources['iPod'] - if 'Books' in self.iTunes.sources[connected_device].playlists.name(): - return self.iTunes.sources[connected_device].playlists['Books'].file_tracks() - return [] + device = self.iTunes.sources[connected_device] + for pl in device.playlists(): + if pl.special_kind() == appscript.k.Books: + if DEBUG: + self.log.info(" Book playlist: '%s' special_kind: '%s'" % (pl.name(), pl.special_kind())) + books = pl.file_tracks() + break + else: + self.log.error(" book_playlist not found") + + for book in books: + if book.kind() in ['Book','Protected book']: + device_books.append(book) + else: + if DEBUG: + self.log.info(" ignoring '%s' of type '%s'" % (book.name(), book.kind())) elif iswindows: if 'iPod' in self.sources: - connected_device = self.sources['iPod'] - dev = self.iTunes.sources.ItemByName(connected_device) - dev_playlists = [pl.Name for pl in dev.Playlists] - if 'Books' in dev_playlists: - return self.iTunes.sources.ItemByName(connected_device).Playlists.ItemByName('Books').Tracks - return [] + try: + pythoncom.CoInitialize() + connected_device = self.sources['iPod'] + device = self.iTunes.sources.ItemByName(connected_device) + + dev_books = None + for pl in device.Playlists: + if self.PlaylistKind[pl.Kind] == 'User' and self.PlaylistSpecialKind[pl.SpecialKind] == 'Books': + if DEBUG: + self.log.info(" Books playlist: '%s' special_kind: '%s'" % (pl.Name, self.PlaylistSpecialKind[pl.SpecialKind])) + dev_books = pl.Tracks + break + else: + if DEBUG: + self.log.info(" no Books playlist found") + + for book in dev_books: + if book.KindAsString in ['Book','Protected book']: + device_books.append(book) + else: + self.log.info(" ignoring '%s' of type %s" % (book.Name, book.KindAsString)) + + finally: + pythoncom.CoUninitialize() + + return device_books def _get_library_books(self): ''' Populate a dict of paths from iTunes Library|Books ''' + if DEBUG: + self.log.info("\nITUNES._get_library_books()") + library_books = {} + lib = None if isosx: - lib = self.iTunes.sources['library'] - if 'Books' in lib.playlists.name(): - lib_books = lib.playlists['Books'].file_tracks() + for source in self.iTunes.sources(): + if source.kind() == appscript.k.library: + lib = source + if DEBUG: + self.log.info(" Library source: '%s' kind: %s" % (lib.name(), lib.kind())) + break + else: + if DEBUG: + self.log.error(' Library source not found') + + if lib is not None: + lib_books = None + for pl in lib.playlists(): + if pl.special_kind() == appscript.k.Books: + if DEBUG: + self.log.info(" Books playlist: '%s' special_kind: '%s'" % (pl.name(), pl.special_kind())) + break + lib_books = pl.file_tracks() for book in lib_books: - path = self.path_template % (book.name(), book.artist()) - library_books[path] = book + if book.kind() in ['Book','Protected book']: + path = self.path_template % (book.name(), book.artist()) + library_books[path] = book + else: + if DEBUG: + self.log.info(" ignoring library book of type '%s'" % book.kind()) + else: + if DEBUG: + self.log.info('ITUNES._get_library_books():\n No Books playlist') + elif iswindows: + lib = None try: pythoncom.CoInitialize() self.iTunes = win32com.client.Dispatch("iTunes.Application") - lib = self.iTunes.sources.ItemByName('Library') - lib_playlists = [pl.Name for pl in lib.Playlists] - if 'Books' in lib_playlists: - lib_books = lib.Playlists.ItemByName('Books').Tracks + for source in self.iTunes.sources: + if source.Kind == self.Sources.index('Library'): + lib = source + self.log.info(" Library source: '%s' kind: %s" % (lib.Name, self.Sources[lib.Kind])) + break + else: + self.log.error(" Library source not found") + + if lib is not None: + lib_books = None + for pl in lib.Playlists: + if self.PlaylistKind[pl.Kind] == 'User' and self.PlaylistSpecialKind[pl.SpecialKind] == 'Books': + if DEBUG: + self.log.info(" Books playlist: '%s' special_kind: '%s'" % (pl.Name, self.PlaylistSpecialKind[pl.SpecialKind])) + lib_books = pl.Tracks + break + else: + if DEBUG: + self.log.error(" no Books playlist found") + for book in lib_books: - path = self.path_template % (book.Name, book.Artist) - library_books[path] = book + if book.KindAsString in ['Book','Protected book']: + path = self.path_template % (book.Name, book.Artist) + library_books[path] = book + else: + if DEBUG: + self.log.info(" ignoring '%s' of type %s" % (book.Name, book.KindAsString)) finally: pythoncom.CoUninitialize() @@ -1188,9 +1411,10 @@ class ITUNES(DevicePlugin): return [] elif iswindows: dev = self.iTunes.sources.ItemByName(connected_device) - dev_playlists = [pl.Name for pl in dev.Playlists] - if 'Purchased' in dev_playlists: - return self.iTunes.sources.ItemByName(connected_device).Playlists.ItemByName('Purchased').Tracks + if dev.Playlists is not None: + dev_playlists = [pl.Name for pl in dev.Playlists] + if 'Purchased' in dev_playlists: + return self.iTunes.sources.ItemByName(connected_device).Playlists.ItemByName('Purchased').Tracks else: return [] @@ -1203,6 +1427,7 @@ class ITUNES(DevicePlugin): kinds = [str(s.kind()).rpartition('.')[2] for s in self.iTunes.sources()] return dict(zip(kinds,names)) elif iswindows: + # Assumes a pythoncom wrapper it_sources = ['Unknown','Library','iPod','AudioCD','MP3CD','Device','RadioTuner','SharedLibrary'] names = [s.name for s in self.iTunes.sources] kinds = [it_sources[s.kind] for s in self.iTunes.sources] @@ -1216,16 +1441,79 @@ class ITUNES(DevicePlugin): else: return True + def _launch_iTunes(self): + ''' + ''' + if DEBUG: + self.log.info("ITUNES:_launch_iTunes():\n Instantiating iTunes") + + if isosx: + ''' + Launch iTunes if not already running + ''' + # Instantiate iTunes + running_apps = appscript.app('System Events') + if not 'iTunes' in running_apps.processes.name(): + if DEBUG: + self.log.info( "ITUNES:open(): Launching iTunes" ) + self.iTunes = iTunes= appscript.app('iTunes', hide=True) + iTunes.run() + initial_status = 'launched' + else: + self.iTunes = appscript.app('iTunes') + initial_status = 'already running' + + if DEBUG: + self.log.info( " [%s - %s (%s), driver version %d.%d.%d]" % + (self.iTunes.name(), self.iTunes.version(), initial_status, + self.version[0],self.version[1],self.version[2])) + + if iswindows: + ''' + Launch iTunes if not already running + Assumes pythoncom wrapper + ''' + # Instantiate iTunes + self.iTunes = win32com.client.Dispatch("iTunes.Application") + if not DEBUG: + self.iTunes.Windows[0].Minimized = True + initial_status = 'launched' + + if DEBUG: + self.log.info( " [%s - %s (%s), driver version %d.%d.%d]" % + (self.iTunes.Windows[0].name, self.iTunes.Version, initial_status, + self.version[0],self.version[1],self.version[2])) + def _remove_from_iTunes(self, cached_book): ''' iTunes does not delete books from storage when removing from database ''' if isosx: storage_path = os.path.split(cached_book['lib_book'].location().path) + title_storage_path = storage_path[0] if DEBUG: self.log.info("ITUNES._remove_from_iTunes():") - self.log.info(" removing storage_path: %s" % storage_path[0]) - shutil.rmtree(storage_path[0]) + self.log.info(" removing title_storage_path: %s" % title_storage_path) + try: + shutil.rmtree(title_storage_path) + except: + self.log.info(" '%s' not empty" % title_storage_path) + + # Clean up title/author directories + author_storage_path = os.path.split(title_storage_path)[0] + self.log.info(" author_storage_path: %s" % author_storage_path) + author_files = os.listdir(author_storage_path) + if '.DS_Store' in author_files: + author_files.pop(author_files.index('.DS_Store')) + if not author_files: + shutil.rmtree(author_storage_path) + if DEBUG: + self.log.info(" removing empty author_storage_path") + else: + if DEBUG: + self.log.info(" author_storage_path not empty (%d objects):" % len(author_files)) + self.log.info(" %s" % '\n'.join(author_files)) + self.iTunes.delete(cached_book['lib_book']) elif iswindows: @@ -1280,7 +1568,7 @@ class ITUNES(DevicePlugin): try: pythoncom.CoInitialize() self.iTunes = win32com.client.Dispatch("iTunes.Application") - #result = self.iTunes.UpdateIPod() + self.iTunes.UpdateIPod() if wait: if DEBUG: sys.stdout.write(" waiting for iPad sync to complete ...") @@ -1291,6 +1579,7 @@ class ITUNES(DevicePlugin): pb_count = len(self._get_purchased_book_ids()) if db_count != lb_count + pb_count: if DEBUG: + #sys.stdout.write(' %d != %d + %d\n' % (db_count,lb_count,pb_count)) sys.stdout.write('.') sys.stdout.flush() time.sleep(2) @@ -1298,11 +1587,9 @@ class ITUNES(DevicePlugin): sys.stdout.write('\n') sys.stdout.flush() break - finally: pythoncom.CoUninitialize() - class BookList(list): ''' A list of books. Each Book object must have the fields: @@ -1333,8 +1620,6 @@ class BookList(list): Add the book to the booklist. Intent is to maintain any device-internal metadata. Return True if booklists must be sync'ed ''' - if DEBUG: - self.log.info("BookList.add_book():\n%s" % book) self.append(book) def remove_book(self, book): diff --git a/src/calibre/devices/prs505/driver.py b/src/calibre/devices/prs505/driver.py index bd06d2d7e1..5a820b3ed8 100644 --- a/src/calibre/devices/prs505/driver.py +++ b/src/calibre/devices/prs505/driver.py @@ -6,8 +6,7 @@ __docformat__ = 'restructuredtext en' Device driver for the SONY devices ''' -import os -import re +import os, time, re from calibre.devices.usbms.driver import USBMS from calibre.devices.prs505 import MEDIA_XML @@ -66,6 +65,41 @@ class PRS505(USBMS): def windows_filter_pnp_id(self, pnp_id): return '_LAUNCHER' in pnp_id + def post_open_callback(self): + + def write_cache(prefix): + try: + cachep = os.path.join(prefix, *(CACHE_XML.split('/'))) + if not os.path.exists(cachep): + dname = os.path.dirname(cachep) + if not os.path.exists(dname): + try: + os.makedirs(dname, mode=0777) + except: + time.sleep(5) + os.makedirs(dname, mode=0777) + with open(cachep, 'wb') as f: + f.write(u''' + + + '''.encode('utf8')) + return True + except: + import traceback + traceback.print_exc() + return False + + # Make sure we don't have the launcher partition + # as one of the cards + + if self._card_a_prefix is not None: + if not write_cache(self._card_a_prefix): + self._card_a_prefix = None + if self._card_b_prefix is not None: + if not write_cache(self._card_b_prefix): + self._card_b_prefix = None + + def get_device_information(self, end_session=True): return (self.gui_name, '', '', '') diff --git a/src/calibre/devices/prs505/sony_cache.py b/src/calibre/devices/prs505/sony_cache.py index 177a741e0d..0292a275d7 100644 --- a/src/calibre/devices/prs505/sony_cache.py +++ b/src/calibre/devices/prs505/sony_cache.py @@ -415,10 +415,11 @@ class XMLCache(object): prints('\tmtime', strftime(os.path.getmtime(path))) record.set('date', date) record.set('size', str(os.stat(path).st_size)) - record.set('title', book.title) + title = book.title if book.title else _('Unknown') + record.set('title', title) ts = book.title_sort if not ts: - ts = title_sort(book.title) + ts = title_sort(title) record.set('titleSorter', ts) record.set('author', authors_to_string(book.authors)) ext = os.path.splitext(path)[1] diff --git a/src/calibre/ebooks/metadata/html.py b/src/calibre/ebooks/metadata/html.py index 45b592c709..aa74548e83 100644 --- a/src/calibre/ebooks/metadata/html.py +++ b/src/calibre/ebooks/metadata/html.py @@ -44,7 +44,8 @@ def get_metadata_(src, encoding=None): author = match.group(2).replace(',', ';') ent_pat = re.compile(r'&(\S+)?;') - title = ent_pat.sub(entity_to_unicode, title) + if title: + title = ent_pat.sub(entity_to_unicode, title) if author: author = ent_pat.sub(entity_to_unicode, author) mi = MetaInformation(title, [author] if author else None) diff --git a/src/calibre/ebooks/mobi/writer.py b/src/calibre/ebooks/mobi/writer.py index e3a8f53685..ca5256b430 100644 --- a/src/calibre/ebooks/mobi/writer.py +++ b/src/calibre/ebooks/mobi/writer.py @@ -1334,7 +1334,7 @@ class MobiWriter(object): item = self._oeb.manifest.hrefs[href] try: data = rescale_image(item.data, self._imagemax) - except IOError: + except: self._oeb.logger.warn('Bad image file %r' % item.href) continue self._records.append(data) diff --git a/src/calibre/ebooks/oeb/transforms/flatcss.py b/src/calibre/ebooks/oeb/transforms/flatcss.py index 6ce079789d..dd735fe13e 100644 --- a/src/calibre/ebooks/oeb/transforms/flatcss.py +++ b/src/calibre/ebooks/oeb/transforms/flatcss.py @@ -201,6 +201,11 @@ class CSSFlattener(object): tag = barename(node.tag) style = stylizer.style(node) cssdict = style.cssdict() + try: + font_size = style['font-size'] + except: + font_size = self.sbase if self.sbase is not None else \ + self.context.source.fbase if 'align' in node.attrib: cssdict['text-align'] = node.attrib['align'] del node.attrib['align'] @@ -219,13 +224,16 @@ class CSSFlattener(object): esize = 1 if esize > 7: esize = 7 - cssdict['font-size'] = fnums[esize] + font_size = fnums[esize] else: try: - cssdict['font-size'] = fnums[force_int(size)] + font_size = fnums[force_int(size)] except: - cssdict['font-size'] = fnums[3] + font_size = fnums[3] + cssdict['font-size'] = '%.1fpt'%font_size del node.attrib['size'] + if 'face' in node.attrib: + del node.attrib['face'] if 'color' in node.attrib: cssdict['color'] = node.attrib['color'] del node.attrib['color'] @@ -244,7 +252,7 @@ class CSSFlattener(object): cssdict['font-size'] = '%0.5fem'%(fsize/psize) psize = fsize elif 'font-size' in cssdict or tag == 'body': - fsize = self.fmap[style['font-size']] + fsize = self.fmap[font_size] cssdict['font-size'] = "%0.5fem" % (fsize / psize) psize = fsize if cssdict: diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py index 131692a2c2..64743e914b 100644 --- a/src/calibre/gui2/add.py +++ b/src/calibre/gui2/add.py @@ -222,6 +222,8 @@ class DBAdder(Thread): class Adder(QObject): + ADD_TIMEOUT = 600 # seconds + def __init__(self, parent, db, callback, spare_server=None): QObject.__init__(self, parent) self.pd = ProgressDialog(_('Adding...'), parent=parent) @@ -328,7 +330,7 @@ class Adder(QObject): except Empty: pass - if (time.time() - self.last_added_at) > 300: + if (time.time() - self.last_added_at) > self.ADD_TIMEOUT: self.timer.stop() self.pd.hide() self.db_adder.end = True diff --git a/src/calibre/gui2/dialogs/config/__init__.py b/src/calibre/gui2/dialogs/config/__init__.py index 5d855b5263..b9c57b27ab 100644 --- a/src/calibre/gui2/dialogs/config/__init__.py +++ b/src/calibre/gui2/dialogs/config/__init__.py @@ -445,6 +445,7 @@ class ConfigDialog(ResizableDialog, Ui_Dialog): self.username.setText(opts.username) self.password.setText(opts.password if opts.password else '') self.opt_max_opds_items.setValue(opts.max_opds_items) + self.opt_max_opds_ungrouped_items.setValue(opts.max_opds_ungrouped_items) self.auto_launch.setChecked(config['autolaunch_server']) self.systray_icon.setChecked(config['systray_icon']) self.sync_news.setChecked(config['upload_news_to_device']) @@ -848,6 +849,8 @@ class ConfigDialog(ResizableDialog, Ui_Dialog): sc.set('port', self.port.value()) sc.set('max_cover', mcs) sc.set('max_opds_items', self.opt_max_opds_items.value()) + sc.set('max_opds_ungrouped_items', + self.opt_max_opds_ungrouped_items.value()) config['delete_news_from_library_on_upload'] = self.delete_news.isChecked() config['upload_news_to_device'] = self.sync_news.isChecked() config['search_as_you_type'] = self.search_as_you_type.isChecked() diff --git a/src/calibre/gui2/dialogs/config/config.ui b/src/calibre/gui2/dialogs/config/config.ui index db748dae7e..917333a989 100644 --- a/src/calibre/gui2/dialogs/config/config.ui +++ b/src/calibre/gui2/dialogs/config/config.ui @@ -892,6 +892,26 @@ + + + + 25 + + + 1000000 + + + + + + + Max. OPDS &ungrouped items: + + + opt_max_opds_ungrouped_items + + + diff --git a/src/calibre/gui2/dialogs/saved_search_editor.py b/src/calibre/gui2/dialogs/saved_search_editor.py index a9382201b9..6a8b790625 100644 --- a/src/calibre/gui2/dialogs/saved_search_editor.py +++ b/src/calibre/gui2/dialogs/saved_search_editor.py @@ -3,14 +3,12 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ' -from PyQt4.QtCore import SIGNAL, Qt -from PyQt4.QtGui import QDialog, QIcon, QListWidgetItem +from PyQt4.QtCore import SIGNAL +from PyQt4.QtGui import QDialog from calibre.gui2.dialogs.saved_search_editor_ui import Ui_SavedSearchEditor -from calibre.utils.config import prefs from calibre.utils.search_query_parser import saved_searches from calibre.gui2.dialogs.confirm_delete import confirm -from calibre.constants import islinux class SavedSearchEditor(QDialog, Ui_SavedSearchEditor): diff --git a/src/calibre/gui2/dialogs/tag_list_editor.py b/src/calibre/gui2/dialogs/tag_list_editor.py index c2cc1d7116..1ec80f4b4a 100644 --- a/src/calibre/gui2/dialogs/tag_list_editor.py +++ b/src/calibre/gui2/dialogs/tag_list_editor.py @@ -1,17 +1,17 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ' + +from functools import partial from PyQt4.QtCore import SIGNAL, Qt from PyQt4.QtGui import QDialog, QListWidgetItem from calibre.gui2.dialogs.tag_list_editor_ui import Ui_TagListEditor from calibre.gui2 import question_dialog, error_dialog +from calibre.ebooks.metadata import title_sort class TagListEditor(QDialog, Ui_TagListEditor): - def tag_cmp(self, x, y): - return cmp(x.lower(), y.lower()) - - def __init__(self, window, db, tag_to_match): + def __init__(self, window, db, tag_to_match, category): QDialog.__init__(self, window) Ui_TagListEditor.__init__(self) self.setupUi(self) @@ -20,9 +20,28 @@ class TagListEditor(QDialog, Ui_TagListEditor): self.to_delete = [] self.db = db self.all_tags = {} - for k,v in db.get_tags_with_ids(): + self.category = category + if category == 'tags': + result = db.get_tags_with_ids() + compare = (lambda x,y:cmp(x.lower(), y.lower())) + elif category == 'series': + result = db.get_series_with_ids() + compare = (lambda x,y:cmp(title_sort(x).lower(), title_sort(y).lower())) + elif category == 'publisher': + result = db.get_publishers_with_ids() + compare = (lambda x,y:cmp(x.lower(), y.lower())) + else: # should be a custom field + self.cc_label = None + if category in db.field_metadata: + self.cc_label = db.field_metadata[category]['label'] + result = self.db.get_custom_items_with_ids(label=self.cc_label) + else: + result = [] + compare = (lambda x,y:cmp(x.lower(), y.lower())) + + for k,v in result: self.all_tags[v] = k - for tag in sorted(self.all_tags.keys(), cmp=self.tag_cmp): + for tag in sorted(self.all_tags.keys(), cmp=compare): item = QListWidgetItem(tag) item.setData(Qt.UserRole, self.all_tags[tag]) self.available_tags.addItem(item) @@ -37,13 +56,18 @@ class TagListEditor(QDialog, Ui_TagListEditor): self.connect(self.available_tags, SIGNAL('itemChanged(QListWidgetItem *)'), self.finish_editing) def finish_editing(self, item): - if item.text() != self.item_before_editing.text(): - if item.text() in self.all_tags.keys() or item.text() in self.to_rename.keys(): - error_dialog(self, 'Tag already used', - 'The tag %s is already used.'%(item.text())).exec_() + if not item.text(): + error_dialog(self, _('Item is blank'), + _('An item cannot be set to nothing. Delete it instead.')).exec_() item.setText(self.item_before_editing.text()) return - id,ign = self.item_before_editing.data(Qt.UserRole).toInt() + if item.text() != self.item_before_editing.text(): + if item.text() in self.all_tags.keys() or item.text() in self.to_rename.keys(): + error_dialog(self, _('Item already used'), + _('The item %s is already used.')%(item.text())).exec_() + item.setText(self.item_before_editing.text()) + return + (id,ign) = self.item_before_editing.data(Qt.UserRole).toInt() self.to_rename[item.text()] = id def rename_tag(self): @@ -52,38 +76,53 @@ class TagListEditor(QDialog, Ui_TagListEditor): def _rename_tag(self, item): if item is None: - error_dialog(self, 'No tag selected', 'You must select one tag from the list of Available tags.').exec_() + error_dialog(self, _('No item selected'), + _('You must select one item from the list of Available items.')).exec_() return self.item_before_editing = item.clone() item.setFlags (item.flags() | Qt.ItemIsEditable); self.available_tags.editItem(item) def delete_tags(self, item=None): - confirms, deletes = [], [] - items = self.available_tags.selectedItems() if item is None else [item] - if not items: - error_dialog(self, 'No tags selected', 'You must select at least one tag from the list of Available tags.').exec_() + deletes = self.available_tags.selectedItems() if item is None else [item] + if not deletes: + error_dialog(self, _('No items selected'), + _('You must select at least one items from the list.')).exec_() + return + ct = ', '.join([unicode(item.text()) for item in deletes]) + if not question_dialog(self, _('Are your sure?'), + '

'+_('Are you certain you want to delete the following items?')+'
'+ct): return - for item in items: - if self.db.is_tag_used(unicode(item.text())): - confirms.append(item) - else: - deletes.append(item) - if confirms: - ct = ', '.join([unicode(item.text()) for item in confirms]) - if question_dialog(self, _('Are your sure?'), - '

'+_('The following tags are used by one or more books. ' - 'Are you certain you want to delete them?')+'
'+ct): - deletes += confirms for item in deletes: - self.to_delete.append(item) + (id,ign) = item.data(Qt.UserRole).toInt() + self.to_delete.append(id) self.available_tags.takeItem(self.available_tags.row(item)) def accept(self): - for text in self.to_rename: - self.db.rename_tag(self.to_rename[text], unicode(text)) - for item in self.to_delete: - self.db.delete_tag(unicode(item.text())) - QDialog.accept(self) + rename_func = None + if self.category == 'tags': + rename_func = self.db.rename_tag + delete_func = self.db.delete_tag_using_id + elif self.category == 'series': + rename_func = self.db.rename_series + delete_func = self.db.delete_series_using_id + elif self.category == 'publisher': + rename_func = self.db.rename_publisher + delete_func = self.db.delete_publisher_using_id + else: + rename_func = partial(self.db.rename_custom_item, label=self.cc_label) + delete_func = partial(self.db.delete_custom_item_using_id, label=self.cc_label) + work_done = False + if rename_func: + for text in self.to_rename: + work_done = True + rename_func(id=self.to_rename[text], new_name=unicode(text)) + for item in self.to_delete: + work_done = True + delete_func(item) + if not work_done: + QDialog.reject(self) + else: + QDialog.accept(self) diff --git a/src/calibre/gui2/dialogs/tag_list_editor.ui b/src/calibre/gui2/dialogs/tag_list_editor.ui index 383dc875ac..4f57af745b 100644 --- a/src/calibre/gui2/dialogs/tag_list_editor.ui +++ b/src/calibre/gui2/dialogs/tag_list_editor.ui @@ -11,7 +11,7 @@ - Tag Editor + Category Editor @@ -25,7 +25,7 @@ - Tags in use + Items in use available_tags @@ -54,7 +54,7 @@ - Delete tag from database. This will unapply the tag from all books and then remove it from the database. + Delete item from database. This will unapply the item from all books and then remove it from the database. ... @@ -74,7 +74,7 @@ - Rename the tag everywhere it is used. + Rename the item in every book where it is used. ... diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 48ce5bbc45..5bccfd7c0d 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -213,7 +213,7 @@ class BooksModel(QAbstractTableModel): # {{{ self.endInsertRows() self.count_changed() - def search(self, text, refinement, reset=True): + def search(self, text, reset=True): try: self.db.search(text) except ParseException: @@ -224,9 +224,10 @@ class BooksModel(QAbstractTableModel): # {{{ self.clear_caches() self.reset() if self.last_search: + # Do not issue search done for the null search. It is used to clear + # the search and count records for restrictions self.searched.emit(True) - def sort(self, col, order, reset=True): if not self.db: return @@ -257,7 +258,7 @@ class BooksModel(QAbstractTableModel): # {{{ self.sort(col, self.sorted_on[1], reset=reset) def research(self, reset=True): - self.search(self.last_search, False, reset=reset) + self.search(self.last_search, reset=reset) def columnCount(self, parent): if parent and parent.isValid(): @@ -730,6 +731,8 @@ class BooksModel(QAbstractTableModel): # {{{ def set_search_restriction(self, s): self.db.data.set_search_restriction(s) + self.search('') + return self.rowCount(None) # }}} @@ -874,7 +877,7 @@ class DeviceBooksModel(BooksModel): # {{{ return flags - def search(self, text, refinement, reset=True): + def search(self, text, reset=True): if not text or not text.strip(): self.map = list(range(len(self.db))) else: @@ -1086,7 +1089,6 @@ class DeviceBooksModel(BooksModel): # {{{ idx = self.map[row] if cname == 'title' : self.db[idx].title = val - self.db[idx].title_sorter = val elif cname == 'authors': self.db[idx].authors = string_to_authors(val) elif cname == 'collections': diff --git a/src/calibre/gui2/library/views.py b/src/calibre/gui2/library/views.py index 7f6edd1b3d..6c3f04828e 100644 --- a/src/calibre/gui2/library/views.py +++ b/src/calibre/gui2/library/views.py @@ -75,6 +75,9 @@ class BooksView(QTableView): # {{{ h.setSectionHidden(idx, True) elif action == 'show': h.setSectionHidden(idx, False) + if h.sectionSize(idx) < 3: + sz = h.sectionSizeHint(idx) + h.resizeSection(idx, sz) elif action == 'ascending': self.sortByColumn(idx, Qt.AscendingOrder) elif action == 'descending': @@ -257,6 +260,11 @@ class BooksView(QTableView): # {{{ for col, alignment in state.get('column_alignment', {}).items(): self._model.change_alignment(col, alignment) + for i in range(h.count()): + if not h.isSectionHidden(i) and h.sectionSize(i) < 3: + sz = h.sectionSizeHint(i) + h.resizeSection(i, sz) + def get_default_state(self): old_state = { 'hidden_columns': [], @@ -429,10 +437,6 @@ class BooksView(QTableView): # {{{ self._search_done = search_done self._model.searched.connect(self.search_done) - def connect_to_restriction_set(self, tv): - # must be synchronous (not queued) - tv.restriction_set.connect(self._model.set_search_restriction) - def connect_to_book_display(self, bd): self._model.new_bookdisplay_data.connect(bd) diff --git a/src/calibre/gui2/lrf_renderer/main.py b/src/calibre/gui2/lrf_renderer/main.py index 2b76ab0fea..87ec55e114 100644 --- a/src/calibre/gui2/lrf_renderer/main.py +++ b/src/calibre/gui2/lrf_renderer/main.py @@ -152,7 +152,7 @@ class Main(MainWindow, Ui_MainWindow): self.stack.setCurrentIndex(1) self.renderer.start() - def find(self, search, refinement): + def find(self, search): self.last_search = search try: self.document.search(search) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 29ae1875c8..ba40c0c92b 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -226,7 +226,7 @@ class GuiRunner(QObject): self.splash_pixmap = QPixmap() self.splash_pixmap.load(I('library.png')) self.splash_screen = QSplashScreen(self.splash_pixmap, - Qt.SplashScreen|Qt.WindowStaysOnTopHint) + Qt.SplashScreen) self.splash_screen.showMessage(_('Starting %s: Loading books...') % __appname__) self.splash_screen.show() diff --git a/src/calibre/gui2/main.ui b/src/calibre/gui2/main.ui index 8c1d1bf787..1abaf53d3c 100644 --- a/src/calibre/gui2/main.ui +++ b/src/calibre/gui2/main.ui @@ -28,7 +28,7 @@ :/images/library.png:/images/library.png - + @@ -305,78 +305,79 @@ - - - - - - 0 - 100 - - - - Qt::Vertical - - - - - 100 - 100 - - - - 0 - - - - - - - Qt::Horizontal - - - - - - - true - - - true - - - true - - - true - - - - + + + + 0 + 100 + + + + Qt::Vertical + + + + + + + + 100 + 100 + + + + 0 + + + + + + + Qt::Horizontal + + + + + + + true + + + true + + + true + + + true + + + + Sort by &popularity - - - - - 0 - - - - Match any + + + + + 0 - - - - Match all - - - - - + + + Match any + + + + + Match all + + + + + Create, edit, and delete user categories @@ -385,10 +386,49 @@ Manage &user categories - - + + + + + + + 100 + 10 + + + + true + + + true + + + false + + + QAbstractItemView::DragDrop + + + true + + + QAbstractItemView::SelectRows + + + false + + + false + + - + + + + + + + 100 @@ -420,139 +460,107 @@ false - - - + + + + + + + + + + 10 + 10 + + + + true + + + true + + + false + + + QAbstractItemView::DragDrop + + + true + + + QAbstractItemView::SelectRows + + + false + + + false + + + + + + + + + + + + 10 + 10 + + + + true + + + true + + + false + + + QAbstractItemView::DragDrop + + + true + + + QAbstractItemView::SelectRows + + + false + + + false + + + + + - - - - - - - 100 - 10 - - - - true - - - true - - - false - - - QAbstractItemView::DragDrop - - - true - - - QAbstractItemView::SelectRows - - - false - - - false - - - - + + + + + + 0 + 0 + + + + + 30 + 0 + + - - - - - - - 10 - 10 - - - - true - - - true - - - false - - - QAbstractItemView::DragDrop - - - true - - - QAbstractItemView::SelectRows - - - false - - - false - - - - - - - - - - - - 10 - 10 - - - - true - - - true - - - false - - - QAbstractItemView::DragDrop - - - true - - - QAbstractItemView::SelectRows - - - false - - - false - - - - - - - - - - - - - - 0 - 0 - - - - - + + + + + diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py index d3059992bc..4e9ccc2900 100644 --- a/src/calibre/gui2/search_box.py +++ b/src/calibre/gui2/search_box.py @@ -57,7 +57,7 @@ class SearchBox2(QComboBox): INTERVAL = 1500 #: Time to wait before emitting search signal MAX_COUNT = 25 - search = pyqtSignal(object, object) + search = pyqtSignal(object) def __init__(self, parent=None): QComboBox.__init__(self, parent) @@ -97,8 +97,12 @@ class SearchBox2(QComboBox): self.help_state = False def clear_to_help(self): + self.search.emit('') self._in_a_search = False self.setEditText(self.help_text) + if self.timer is not None: # Turn off any timers that got started in setEditText + self.killTimer(self.timer) + self.timer = None self.line_edit.home(False) self.help_state = True self.line_edit.setStyleSheet( @@ -111,7 +115,6 @@ class SearchBox2(QComboBox): def clear(self): self.clear_to_help() - self.search.emit('', False) def search_done(self, ok): if not unicode(self.currentText()).strip(): @@ -155,9 +158,8 @@ class SearchBox2(QComboBox): if not text or text == self.help_text: return self.clear() self.help_state = False - refinement = text.startswith(self.prev_search) and ':' not in text self.prev_search = text - self.search.emit(text, refinement) + self.search.emit(text) idx = self.findText(text, Qt.MatchFixedString) self.block_signals(True) @@ -187,12 +189,15 @@ class SearchBox2(QComboBox): self.set_search_string(joiner.join(tags)) def set_search_string(self, txt): + if not txt: + self.clear_to_help() + return self.normalize_state() self.setEditText(txt) if self.timer is not None: # Turn off any timers that got started in setEditText self.killTimer(self.timer) self.timer = None - self.search.emit(txt, False) + self.search.emit(txt) self.line_edit.end(False) self.initial_state = False diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index 11db157ed4..b1aecd9ba3 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -17,15 +17,17 @@ from calibre.gui2 import config, NONE from calibre.utils.config import prefs from calibre.library.field_metadata import TagsIcons from calibre.utils.search_query_parser import saved_searches +from calibre.gui2 import error_dialog class TagsView(QTreeView): # {{{ - need_refresh = pyqtSignal() - restriction_set = pyqtSignal(object) + refresh_required = pyqtSignal() tags_marked = pyqtSignal(object, object) user_category_edit = pyqtSignal(object) - tag_list_edit = pyqtSignal(object) + tag_list_edit = pyqtSignal(object, object) saved_search_edit = pyqtSignal(object) + tag_item_renamed = pyqtSignal() + search_item_renamed = pyqtSignal() def __init__(self, *args): QTreeView.__init__(self, *args) @@ -34,26 +36,26 @@ class TagsView(QTreeView): # {{{ self.setIconSize(QSize(30, 30)) self.tag_match = None - def set_database(self, db, tag_match, popularity, restriction): + def set_database(self, db, tag_match, popularity): self.hidden_categories = config['tag_browser_hidden_categories'] - self._model = TagsModel(db, parent=self, hidden_categories=self.hidden_categories) + self._model = TagsModel(db, parent=self, + hidden_categories=self.hidden_categories, + search_restriction=None) self.popularity = popularity - self.restriction = restriction self.tag_match = tag_match self.db = db + self.search_restriction = None self.setModel(self._model) self.setContextMenuPolicy(Qt.CustomContextMenu) self.clicked.connect(self.toggle) self.customContextMenuRequested.connect(self.show_context_menu) self.popularity.setChecked(config['sort_by_popularity']) self.popularity.stateChanged.connect(self.sort_changed) - self.restriction.activated[str].connect(self.search_restriction_set) - self.need_refresh.connect(self.recount, type=Qt.QueuedConnection) + self.refresh_required.connect(self.recount, type=Qt.QueuedConnection) db.add_listener(self.database_changed) - self.saved_searches_changed(recount=False) def database_changed(self, event, ids): - self.need_refresh.emit() + self.refresh_required.emit() @property def match_all(self): @@ -64,34 +66,38 @@ class TagsView(QTreeView): # {{{ self.model().refresh() # self.search_restriction_set() - def search_restriction_set(self, s): - self.clear() - if len(s) == 0: - self.search_restriction = '' + def set_search_restriction(self, s): + if s: + self.search_restriction = s else: - self.search_restriction = 'search:"%s"' % unicode(s).strip() - self.model().set_search_restriction(self.search_restriction) - self.restriction_set.emit(self.search_restriction) - self.recount() # Must happen after the emission of the restriction_set signal - self.tags_marked.emit(self._model.tokens(), self.match_all) + self.search_restriction = None + self.set_new_model() def mouseReleaseEvent(self, event): # Swallow everything except leftButton so context menus work correctly if event.button() == Qt.LeftButton: QTreeView.mouseReleaseEvent(self, event) + def mouseDoubleClickEvent(self, event): + # swallow these to avoid toggling and editing at the same time + pass + def toggle(self, index): modifiers = int(QApplication.keyboardModifiers()) exclusive = modifiers not in (Qt.CTRL, Qt.SHIFT) if self._model.toggle(index, exclusive): self.tags_marked.emit(self._model.tokens(), self.match_all) - def context_menu_handler(self, action=None, category=None): + def context_menu_handler(self, action=None, category=None, + key=None, index=None): if not action: return try: - if action == 'manage_tags': - self.tag_list_edit.emit(category) + if action == 'edit_item': + self.edit(index) + return + if action == 'open_editor': + self.tag_list_edit.emit(category, key) return if action == 'manage_categories': self.user_category_edit.emit(category) @@ -117,29 +123,51 @@ class TagsView(QTreeView): # {{{ item = index.internalPointer() tag_name = '' if item.type == TagTreeItem.TAG: + tag_item = item tag_name = item.tag.name item = item.parent if item.type == TagTreeItem.CATEGORY: category = unicode(item.name.toString()) - self.context_menu = QMenu(self) - self.context_menu.addAction(_('Hide %s') % category, - partial(self.context_menu_handler, action='hide', category=category)) + key = item.category_key + # Verify that we are working with a field that we know something about + if key not in self.db.field_metadata: + return True - if self.hidden_categories: + self.context_menu = QMenu(self) + # If the user right-clicked on an editable item, then offer + # the possibility of renaming that item + if tag_name and \ + (key in ['authors', 'tags', 'series', 'publisher', 'search'] or \ + self.db.field_metadata[key]['is_custom']): + self.context_menu.addAction(_('Rename') + " '" + tag_name + "'", + partial(self.context_menu_handler, action='edit_item', + category=tag_item, index=index)) self.context_menu.addSeparator() + # Hide/Show/Restore categories + self.context_menu.addAction(_('Hide category %s') % category, + partial(self.context_menu_handler, action='hide', category=category)) + if self.hidden_categories: m = self.context_menu.addMenu(_('Show category')) - for col in self.hidden_categories: + for col in sorted(self.hidden_categories, cmp=lambda x,y: cmp(x.lower(), y.lower())): m.addAction(col, partial(self.context_menu_handler, action='show', category=col)) - self.context_menu.addSeparator() - self.context_menu.addAction(_('Restore defaults'), + self.context_menu.addAction(_('Show all categories'), partial(self.context_menu_handler, action='defaults')) + # Offer specific editors for tags/series/publishers/saved searches self.context_menu.addSeparator() - self.context_menu.addAction(_('Manage Tags'), - partial(self.context_menu_handler, action='manage_tags', - category=tag_name)) + if key in ['tags', 'publisher', 'series'] or \ + self.db.field_metadata[key]['is_custom']: + self.context_menu.addAction(_('Manage ') + category, + partial(self.context_menu_handler, action='open_editor', + category=tag_name, key=key)) + elif key == 'search': + self.context_menu.addAction(_('Manage Saved Searches'), + partial(self.context_menu_handler, action='manage_searches', + category=tag_name)) + # Always show the user categories editor + self.context_menu.addSeparator() if category in prefs['user_categories'].keys(): self.context_menu.addAction(_('Manage User Categories'), partial(self.context_menu_handler, action='manage_categories', @@ -149,29 +177,12 @@ class TagsView(QTreeView): # {{{ partial(self.context_menu_handler, action='manage_categories', category=None)) - self.context_menu.addAction(_('Manage Saved Searches'), - partial(self.context_menu_handler, action='manage_searches', - category=tag_name)) - self.context_menu.popup(self.mapToGlobal(point)) return True def clear(self): - self.model().clear_state() - - def saved_searches_changed(self, recount=True): - p = prefs['saved_searches'].keys() - p.sort() - t = self.restriction.currentText() - self.restriction.clear() # rebuild the restrictions combobox using current saved searches - self.restriction.addItem('') - for s in p: - self.restriction.addItem(s) - if t in p: # redo the current restriction, if there was one - self.restriction.setCurrentIndex(self.restriction.findText(t)) - self.search_restriction_set(t) - if recount: - self.recount() + if self.model(): + self.model().clear_state() def recount(self, *args): ci = self.currentIndex() @@ -193,7 +204,8 @@ class TagsView(QTreeView): # {{{ # model. Reason: it is much easier than reconstructing the browser tree. def set_new_model(self): self._model = TagsModel(self.db, parent=self, - hidden_categories=self.hidden_categories) + hidden_categories=self.hidden_categories, + search_restriction=self.search_restriction) self.setModel(self._model) # }}} @@ -203,7 +215,8 @@ class TagTreeItem(object): # {{{ TAG = 1 ROOT = 2 - def __init__(self, data=None, category_icon=None, icon_map=None, parent=None, tooltip=None): + def __init__(self, data=None, category_icon=None, icon_map=None, + parent=None, tooltip=None, category_key=None): self.parent = parent self.children = [] if self.parent is not None: @@ -218,6 +231,7 @@ class TagTreeItem(object): # {{{ self.bold_font = QFont() self.bold_font.setBold(True) self.bold_font = QVariant(self.bold_font) + self.category_key = category_key elif self.type == self.TAG: icon_map[0] = data.icon self.tag, self.icon_state_map = data, list(map(QVariant, icon_map)) @@ -263,6 +277,8 @@ class TagTreeItem(object): # {{{ return QVariant('%s'%(self.tag.name)) else: return QVariant('[%d] %s'%(self.tag.count, self.tag.name)) + if role == Qt.EditRole: + return QVariant(self.tag.name) if role == Qt.DecorationRole: return self.icon_state_map[self.tag.state] if role == Qt.ToolTipRole and self.tag.tooltip is not None: @@ -277,7 +293,7 @@ class TagTreeItem(object): # {{{ class TagsModel(QAbstractItemModel): # {{{ - def __init__(self, db, parent=None, hidden_categories=None): + def __init__(self, db, parent, hidden_categories=None, search_restriction=None): QAbstractItemModel.__init__(self, parent) # must do this here because 'QPixmap: Must construct a QApplication @@ -297,9 +313,9 @@ class TagsModel(QAbstractItemModel): # {{{ self.icon_state_map = [None, QIcon(I('plus.svg')), QIcon(I('minus.svg'))] self.db = db + self.tags_view = parent self.hidden_categories = hidden_categories - self.search_restriction = '' - self.ignore_next_search = 0 + self.search_restriction = search_restriction # Reconstruct the user categories, putting them into metadata tb_cats = self.db.field_metadata @@ -324,7 +340,7 @@ class TagsModel(QAbstractItemModel): # {{{ c = TagTreeItem(parent=self.root_item, data=self.categories[i], category_icon=self.category_icon_map[r], - tooltip=tt) + tooltip=tt, category_key=r) for tag in data[r]: TagTreeItem(parent=c, data=tag, icon_map=self.icon_state_map) @@ -335,18 +351,22 @@ class TagsModel(QAbstractItemModel): # {{{ self.row_map = [] self.categories = [] - if len(self.search_restriction): - data = self.db.get_categories(sort_on_count=sort, icon_map=self.category_icon_map, - ids=self.db.search(self.search_restriction, return_matches=True)) + if self.search_restriction: + data = self.db.get_categories(sort_on_count=sort, + icon_map=self.category_icon_map, + ids=self.db.search('', return_matches=True)) else: data = self.db.get_categories(sort_on_count=sort, icon_map=self.category_icon_map) tb_categories = self.db.field_metadata + self.category_items = {} for category in tb_categories: if category in data: # They should always be there, but ... + # make a map of sets of names per category for duplicate + # checking when editing + self.category_items[category] = set([tag.name for tag in data[category]]) self.row_map.append(category) self.categories.append(tb_categories[category]['name']) - return data def refresh(self): @@ -382,11 +402,52 @@ class TagsModel(QAbstractItemModel): # {{{ item = index.internalPointer() return item.data(role) + def setData(self, index, value, role=Qt.EditRole): + if not index.isValid(): + return NONE + val = unicode(value.toString()) + if not val: + error_dialog(self.tags_view, _('Item is blank'), + _('An item cannot be set to nothing. Delete it instead.')).exec_() + return False + item = index.internalPointer() + key = item.parent.category_key + # make certain we know about the category + if key not in self.db.field_metadata: + return + if val in self.category_items[key]: + error_dialog(self.tags_view, 'Duplicate item', + _('The name %s is already used.')%val).exec_() + return False + oldval = item.tag.name + if key == 'search': + saved_searches.rename(unicode(item.data(role).toString()), val) + self.tags_view.search_item_renamed.emit() + else: + if key == 'series': + self.db.rename_series(item.tag.id, val) + elif key == 'publisher': + self.db.rename_publisher(item.tag.id, val) + elif key == 'tags': + self.db.rename_tag(item.tag.id, val) + elif key == 'authors': + self.db.rename_author(item.tag.id, val) + elif self.db.field_metadata[key]['is_custom']: + self.db.rename_custom_item(item.tag.id, val, + label=self.db.field_metadata[key]['label']) + self.tags_view.tag_item_renamed.emit() + item.tag.name = val + self.dataChanged.emit(index, index) + # replace the old value in the duplicate detection map with the new one + self.category_items[key].discard(oldval) + self.category_items[key].add(val) + return True + def headerData(self, *args): return NONE def flags(self, *args): - return Qt.ItemIsEnabled|Qt.ItemIsSelectable + return Qt.ItemIsEnabled|Qt.ItemIsSelectable|Qt.ItemIsEditable def path_for_index(self, index): ans = [] @@ -464,12 +525,6 @@ class TagsModel(QAbstractItemModel): # {{{ def clear_state(self): self.reset_all_states() - def reinit(self, *args, **kwargs): - if self.ignore_next_search == 0: - self.reset_all_states() - else: - self.ignore_next_search -= 1 - def toggle(self, index, exclusive): if not index.isValid(): return False item = index.internalPointer() @@ -477,7 +532,6 @@ class TagsModel(QAbstractItemModel): # {{{ item.toggle() if exclusive: self.reset_all_states(except_=item.tag) - self.ignore_next_search = 2 self.dataChanged.emit(index, index) return True return False diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 773f44acd2..01f0cf6271 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -160,9 +160,9 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.restriction_in_effect = False self.search.initialize('main_search_history', colorize=True, help_text=_('Search (For Advanced Search click the button to the left)')) - self.connect(self.clear_button, SIGNAL('clicked()'), self.search_clear) + self.connect(self.clear_button, SIGNAL('clicked()'), self.search.clear) self.connect(self.clear_button, SIGNAL('clicked()'), self.saved_search.clear_to_help) - self.search_clear() + self.search.clear() self.saved_search.initialize(saved_searches, self.search, colorize=True, help_text=_('Saved Searches')) @@ -226,14 +226,14 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.connect(self.quit_action, SIGNAL('triggered(bool)'), self.quit) self.connect(self.donate_action, SIGNAL('triggered(bool)'), self.donate) self.connect(self.restore_action, SIGNAL('triggered()'), - self.show_windows) + self.show_windows) self.connect(self.action_show_book_details, - SIGNAL('triggered(bool)'), self.show_book_info) + SIGNAL('triggered(bool)'), self.show_book_info) self.connect(self.action_restart, SIGNAL('triggered()'), self.restart) self.connect(self.system_tray_icon, - SIGNAL('activated(QSystemTrayIcon::ActivationReason)'), - self.system_tray_icon_activated) + SIGNAL('activated(QSystemTrayIcon::ActivationReason)'), + self.system_tray_icon_activated) self.tool_bar.contextMenuEvent = self.no_op ####################### Start spare job server ######################## @@ -521,8 +521,6 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.search_done)), ('connect_to_book_display', (self.status_bar.book_info.show_data,)), - ('connect_to_restriction_set', - (self.tags_view,)), ]: for view in (self.library_view, self.memory_view, self.card_a_view, self.card_b_view): getattr(view, func)(*args) @@ -545,22 +543,22 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.cover_cache.start() self.library_view.model().cover_cache = self.cover_cache self.connect(self.edit_categories, SIGNAL('clicked()'), self.do_user_categories_edit) - self.tags_view.set_database(db, self.tag_match, self.popularity, self.search_restriction) + self.search_restriction.activated[str].connect(self.apply_search_restriction) + self.tags_view.set_database(db, self.tag_match, self.popularity) self.tags_view.tags_marked.connect(self.search.search_from_tags) - for x in (self.saved_search.clear_to_help, self.mark_restriction_set): - self.tags_view.restriction_set.connect(x) self.tags_view.tags_marked.connect(self.saved_search.clear_to_help) self.tags_view.tag_list_edit.connect(self.do_tags_list_edit) self.tags_view.user_category_edit.connect(self.do_user_categories_edit) self.tags_view.saved_search_edit.connect(self.do_saved_search_edit) - self.search.search.connect(self.tags_view.model().reinit) + self.tags_view.tag_item_renamed.connect(self.do_tag_item_renamed) + self.tags_view.search_item_renamed.connect(self.saved_search.clear_to_help) for x in (self.location_view.count_changed, self.tags_view.recount, self.restriction_count_changed): self.library_view.model().count_changed_signal.connect(x) self.connect(self.search, SIGNAL('cleared()'), self.search_box_cleared) - self.connect(self.saved_search, SIGNAL('changed()'), - self.tags_view.saved_searches_changed, Qt.QueuedConnection) + self.connect(self.saved_search, SIGNAL('changed()'), self.saved_searches_changed) + self.saved_searches_changed() if not gprefs.get('quick_start_guide_added', False): from calibre.ebooks.metadata import MetaInformation mi = MetaInformation(_('Calibre Quick Start Guide'), ['John Schember']) @@ -583,7 +581,6 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.search_restriction.setSizeAdjustPolicy(self.search_restriction.AdjustToMinimumContentsLengthWithIcon) self.search_restriction.setMinimumContentsLength(10) - ########################### Cover Flow ################################ self.cover_flow = None if CoverFlow is not None: @@ -623,7 +620,6 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.sidebar.job_done, Qt.QueuedConnection) - if config['autolaunch_server']: from calibre.library.server.main import start_threaded_server from calibre.library.server import server_config @@ -660,19 +656,28 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.tags_view.set_new_model() self.tags_view.recount() - def do_tags_list_edit(self, tag): - d = TagListEditor(self, self.library_view.model().db, tag) + def do_tags_list_edit(self, tag, category): + d = TagListEditor(self, self.library_view.model().db, tag, category) d.exec_() if d.result() == d.Accepted: + # Clean up everything, as information could have changed for many books. + self.library_view.model().refresh() self.tags_view.set_new_model() self.tags_view.recount() - self.library_view.model().refresh() + self.saved_search.clear_to_help() + self.search.clear_to_help() + + def do_tag_item_renamed(self): + # Clean up library view and search + self.library_view.model().refresh() + self.saved_search.clear_to_help() + self.search.clear_to_help() def do_saved_search_edit(self, search): d = SavedSearchEditor(self, search) d.exec_() if d.result() == d.Accepted: - self.tags_view.saved_searches_changed(recount=True) + self.saved_searches_changed() self.saved_search.clear_to_help() def resizeEvent(self, ev): @@ -831,19 +836,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): sm.select(idx, sm.ClearAndSelect|sm.Rows) self.library_view.setCurrentIndex(idx) - - ''' - Handling of the count of books in a restricted view requires that - we capture the count after the initial restriction search. To so this, - we require that the restriction_set signal be issued before the search signal, - so that when the search_done happens and the count is displayed, - we can grab the count. This works because the search box is cleared - when a restriction is set, so that first search will find all books. - - Adding and deleting books creates another complexity. When added, they are - displayed regardless of whether they match the restriction. However, if they - do not, they are removed at the next search. The counts must take this + Restrictions. + Adding and deleting books creates a complexity. When added, they are + displayed regardless of whether they match a search restriction. However, if + they do not, they are removed at the next search. The counts must take this behavior into effect. ''' @@ -851,15 +848,25 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.restriction_count_of_books_in_view += c - self.restriction_count_of_books_in_library self.restriction_count_of_books_in_library = c if self.restriction_in_effect: - self.set_number_of_books_shown(compute_count=False) + self.set_number_of_books_shown() - def mark_restriction_set(self, r): - self.restriction_in_effect = False if r is None or not r else True + def apply_search_restriction(self, r): + r = unicode(r) + if r is not None and r != '': + self.restriction_in_effect = True + restriction = "search:%s"%(r) + else: + self.restriction_in_effect = False + restriction = '' + self.restriction_count_of_books_in_view = \ + self.library_view.model().set_search_restriction(restriction) + self.search.clear_to_help() + self.saved_search.clear_to_help() + self.tags_view.set_search_restriction(restriction) + self.set_number_of_books_shown() - def set_number_of_books_shown(self, compute_count): + def set_number_of_books_shown(self): if self.current_view() == self.library_view and self.restriction_in_effect: - if compute_count: - self.restriction_count_of_books_in_view = self.current_view().row_count() t = _("({0} of {1})").format(self.current_view().row_count(), self.restriction_count_of_books_in_view) self.search_count.setStyleSheet('QLabel { border-radius: 8px; background-color: yellow; }') @@ -873,18 +880,31 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.search_count.setText(t) def search_box_cleared(self): - self.set_number_of_books_shown(compute_count=True) self.tags_view.clear() self.saved_search.clear_to_help() - - def search_clear(self): - self.set_number_of_books_shown(compute_count=True) - self.search.clear() + self.set_number_of_books_shown() def search_done(self, view, ok): if view is self.current_view(): self.search.search_done(ok) - self.set_number_of_books_shown(compute_count=False) + self.set_number_of_books_shown() + + def saved_searches_changed(self): + p = prefs['saved_searches'].keys() + p.sort() + t = unicode(self.search_restriction.currentText()) + self.search_restriction.clear() # rebuild the restrictions combobox using current saved searches + self.search_restriction.addItem('') + self.tags_view.recount() + for s in p: + self.search_restriction.addItem(s) + if t: + if t in p: # redo the current restriction, if there was one + self.search_restriction.setCurrentIndex(self.search_restriction.findText(t)) + # self.tags_view.set_search_restriction(t) + else: + self.search_restriction.setCurrentIndex(0) + self.apply_search_restriction('') def sync_cf_to_listview(self, current, previous): if self.cover_flow_sync_flag and self.cover_flow.isVisible() and \ @@ -2293,14 +2313,17 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): def library_moved(self, newloc): if newloc is None: return db = LibraryDatabase2(newloc) + self.library_path = newloc self.book_on_device(None, reset=True) db.set_book_on_device_func(self.book_on_device) self.library_view.set_database(db) + self.tags_view.set_database(db, self.tag_match, self.popularity) self.library_view.model().set_book_on_device_func(self.book_on_device) self.status_bar.clearMessage() self.search.clear_to_help() self.status_bar.reset_info() self.library_view.model().count_changed() + prefs['library_path'] = self.library_path ############################################################################ @@ -2347,7 +2370,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.search_restriction.setEnabled(False) for action in list(self.delete_menu.actions())[1:]: action.setEnabled(False) - self.set_number_of_books_shown(compute_count=False) + self.set_number_of_books_shown() def device_job_exception(self, job): diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 06abb7181c..0964ed47c3 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -424,7 +424,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.set_bookmarks(self.iterator.bookmarks) - def find(self, text, refinement, repeat=False, backwards=False): + def find(self, text, repeat=False, backwards=False): if not text: self.view.search('') return self.search.search_done(False) diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 83c56c5395..e2ecdd9f55 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -241,6 +241,24 @@ class ResultCache(SearchQueryParser): matches = set([]) if len(query) < 2: return matches + + if location == 'date': + location = 'timestamp' + loc = self.field_metadata[location]['rec_index'] + + if query == 'false': + for item in self._data: + if item is None: continue + if item[loc] is None or item[loc] == UNDEFINED_DATE: + matches.add(item[0]) + return matches + if query == 'true': + for item in self._data: + if item is None: continue + if item[loc] is not None and item[loc] != UNDEFINED_DATE: + matches.add(item[0]) + return matches + relop = None for k in self.date_search_relops.keys(): if query.startswith(k): @@ -249,10 +267,6 @@ class ResultCache(SearchQueryParser): if relop is None: (p, relop) = self.date_search_relops['='] - if location == 'date': - location = 'timestamp' - loc = self.field_metadata[location]['rec_index'] - if query == _('today'): qd = now() field_count = 3 @@ -301,7 +315,7 @@ class ResultCache(SearchQueryParser): if query == 'false': query = '0' elif query == 'true': - query = '>0' + query = '!=0' relop = None for k in self.numeric_search_relops.keys(): if query.startswith(k): diff --git a/src/calibre/library/custom_columns.py b/src/calibre/library/custom_columns.py index 83e6b029cb..4d2c8970b6 100644 --- a/src/calibre/library/custom_columns.py +++ b/src/calibre/library/custom_columns.py @@ -171,6 +171,40 @@ class CustomColumns(object): ans.sort(cmp=lambda x,y:cmp(x.lower(), y.lower())) return ans + # convenience methods for tag editing + def get_custom_items_with_ids(self, label=None, num=None): + if label is not None: + data = self.custom_column_label_map[label] + if num is not None: + data = self.custom_column_num_map[num] + table,lt = self.custom_table_names(data['num']) + if not data['normalized']: + return [] + ans = self.conn.get('SELECT id, value FROM %s'%table) + return ans + + def rename_custom_item(self, id, new_name, label=None, num=None): + if id: + if label is not None: + data = self.custom_column_label_map[label] + if num is not None: + data = self.custom_column_num_map[num] + table,lt = self.custom_table_names(data['num']) + self.conn.execute('UPDATE %s SET value=? WHERE id=?'%table, (new_name, id)) + self.conn.commit() + + def delete_custom_item_using_id(self, id, label=None, num=None): + if id: + if label is not None: + data = self.custom_column_label_map[label] + if num is not None: + data = self.custom_column_num_map[num] + table,lt = self.custom_table_names(data['num']) + self.conn.execute('DELETE FROM %s WHERE value=?'%lt, (id,)) + self.conn.execute('DELETE FROM %s WHERE id=?'%table, (id,)) + self.conn.commit() + # end convenience methods + def all_custom(self, label=None, num=None): if label is not None: data = self.custom_column_label_map[label] diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 0544293095..f1eeb23643 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -9,12 +9,6 @@ The database used to store ebook metadata import os, sys, shutil, cStringIO, glob,functools, traceback from itertools import repeat from math import floor -try: - from PIL import Image as PILImage - PILImage -except ImportError: - import Image as PILImage - from PyQt4.QtGui import QImage @@ -37,7 +31,7 @@ from calibre.utils.date import utcnow, now as nowf, utcfromtimestamp from calibre.utils.config import prefs from calibre.utils.search_query_parser import saved_searches from calibre.ebooks import BOOK_EXTENSIONS, check_ebook_format - +from calibre.utils.magick_draw import save_cover_data_to if iswindows: import calibre.utils.winshell as winshell @@ -475,11 +469,9 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if callable(getattr(data, 'save', None)): data.save(path) else: - f = data - if not callable(getattr(data, 'read', None)): - f = cStringIO.StringIO(data) - im = PILImage.open(f) - im.convert('RGB').save(path, 'JPEG') + if callable(getattr(data, 'read', None)): + data = data.read() + save_cover_data_to(data, path) def book_on_device(self, id): if callable(self.book_on_device_func): @@ -643,11 +635,24 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): ''' Remove orphaned entries. ''' - st = 'DELETE FROM %(table)s WHERE (SELECT COUNT(id) FROM books_%(ltable)s_link WHERE %(ltable_col)s=%(table)s.id) < 1;' - self.conn.execute(st%dict(ltable='authors', table='authors', ltable_col='author')) - self.conn.execute(st%dict(ltable='publishers', table='publishers', ltable_col='publisher')) - self.conn.execute(st%dict(ltable='tags', table='tags', ltable_col='tag')) - self.conn.execute(st%dict(ltable='series', table='series', ltable_col='series')) + def doit(ltable, table, ltable_col): + st = ('DELETE FROM books_%s_link WHERE (SELECT COUNT(id) ' + 'FROM books WHERE id=book) < 1;')%ltable + self.conn.execute(st) + st = ('DELETE FROM %(table)s WHERE (SELECT COUNT(id) ' + 'FROM books_%(ltable)s_link WHERE ' + '%(ltable_col)s=%(table)s.id) < 1;') % dict( + ltable=ltable, table=table, ltable_col=ltable_col) + self.conn.execute(st) + + for ltable, table, ltable_col in [ + ('authors', 'authors', 'author'), + ('publishers', 'publishers', 'publisher'), + ('tags', 'tags', 'tag'), + ('series', 'series', 'series') + ]: + doit(ltable, table, ltable_col) + for id_, tag in self.conn.get('SELECT id, name FROM tags', all=True): if not tag.strip(): self.conn.execute('DELETE FROM books_tags_link WHERE tag=?', @@ -730,9 +735,9 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): categories[category] = [Tag(formatter(r[1]), count=r[2], id=r[0], icon=icon, tooltip = tooltip) for r in data if item_not_zero_func(r)] - if category == 'series': - categories[category].sort(cmp=lambda x,y:cmp(title_sort(x.name), - title_sort(y.name))) + if category == 'series' and not sort_on_count: + categories[category].sort(cmp=lambda x,y:cmp(title_sort(x.name).lower(), + title_sort(y.name).lower())) # We delayed computing the standard formats category because it does not # use a view, but is computed dynamically @@ -985,19 +990,91 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if notify: self.notify('metadata', [id]) - # Convenience method for tags_list_editor + # Convenience methods for tags_list_editor + # Note: we generally do not need to refresh_ids because library_view will + # refresh everything. def get_tags_with_ids(self): - result = self.conn.get('SELECT * FROM tags') + result = self.conn.get('SELECT id,name FROM tags') if not result: - return {} - r = [] - for k,v in result: - r.append((k,v)) - return r + return [] + return result - def rename_tag(self, id, new): - self.conn.execute('UPDATE tags SET name=? WHERE id=?', (new, id)) - self.conn.commit() + def rename_tag(self, id, new_name): + if id: + self.conn.execute('UPDATE tags SET name=? WHERE id=?', (new_name, id)) + self.conn.commit() + + def delete_tag_using_id(self, id): + if id: + self.conn.execute('DELETE FROM books_tags_link WHERE tag=?', (id,)) + self.conn.execute('DELETE FROM tags WHERE id=?', (id,)) + self.conn.commit() + + def get_series_with_ids(self): + result = self.conn.get('SELECT id,name FROM series') + if not result: + return [] + return result + + def rename_series(self, id, new_name): + if id: + self.conn.execute('UPDATE series SET name=? WHERE id=?', (new_name, id)) + self.conn.commit() + + def delete_series_using_id(self, id): + if id: + books = self.conn.get('SELECT book from books_series_link WHERE series=?', (id,)) + self.conn.execute('DELETE FROM books_series_link WHERE series=?', (id,)) + self.conn.execute('DELETE FROM series WHERE id=?', (id,)) + self.conn.commit() + for (book_id,) in books: + self.conn.execute('UPDATE books SET series_index=1.0 WHERE id=?', (book_id,)) + + def get_publishers_with_ids(self): + result = self.conn.get('SELECT id,name FROM publishers') + if not result: + return [] + return result + + def rename_publisher(self, id, new_name): + if id: + self.conn.execute('UPDATE publishers SET name=? WHERE id=?', (new_name, id)) + self.conn.commit() + + def delete_publisher_using_id(self, id): + if id: + self.conn.execute('DELETE FROM books_publishers_link WHERE publisher=?', (id,)) + self.conn.execute('DELETE FROM publishers WHERE id=?', (id,)) + self.conn.commit() + + # There is no editor for author, so we do not need get_authors_with_ids or + # delete_author_using_id. + def rename_author(self, id, new_name): + if id: + # Make sure that any commas in new_name are changed to '|'! + new_name = new_name.replace(',', '|') + self.conn.execute('UPDATE authors SET name=? WHERE id=?', (new_name, id)) + self.conn.commit() + # now must fix up the books + books = self.conn.get('SELECT book from books_authors_link WHERE author=?', (id,)) + for (book_id,) in books: + # First, must refresh the cache to see the new authors + self.data.refresh_ids(self, [book_id]) + # now fix the filesystem paths + self.set_path(book_id, index_is_id=True) + # Next fix the author sort. Reset it to the default + authors = self.conn.get(''' + SELECT authors.name + FROM authors, books_authors_link as bl + WHERE bl.book = ? and bl.author = authors.id + ''' , (book_id,)) + # unpack the double-list structure + for i,aut in enumerate(authors): + authors[i] = aut[0] + ss = authors_to_sort_string(authors) + self.conn.execute('UPDATE books SET author_sort=? WHERE id=?', (ss, id)) + + # end convenience methods def get_tags(self, id): result = self.conn.get( @@ -1083,7 +1160,6 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): self.conn.execute('DELETE FROM tags WHERE id=?', (id,)) self.conn.commit() - def set_series(self, id, series, notify=True): self.conn.execute('DELETE FROM books_series_link WHERE book=?',(id,)) self.conn.execute('DELETE FROM series WHERE (SELECT COUNT(id) FROM books_series_link WHERE series=series.id) < 1') @@ -1603,6 +1679,7 @@ books_series_link feeds def check_integrity(self, callback): callback(0., _('Checking SQL integrity...')) + self.clean() user_version = self.user_version sql = '\n'.join(self.conn.dump()) self.conn.close() diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index 07c90119bd..243e3646da 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -195,11 +195,11 @@ class FieldMetadata(dict): 'is_category':False}), ('ondevice', {'table':None, 'column':None, - 'datatype':'bool', + 'datatype':'text', 'is_multiple':None, 'kind':'field', 'name':None, - 'search_terms':[], + 'search_terms':['ondevice'], 'is_custom':False, 'is_category':False}), ('path', {'table':None, diff --git a/src/calibre/library/server/__init__.py b/src/calibre/library/server/__init__.py index 441aee9b60..5050dfaa99 100644 --- a/src/calibre/library/server/__init__.py +++ b/src/calibre/library/server/__init__.py @@ -38,6 +38,12 @@ def server_config(defaults=None): c.add_opt('max_opds_items', ['--max-opds-items'], default=30, help=_('The maximum number of matches to return per OPDS query. ' 'This affects Stanza, WordPlayer, etc. integration.')) + c.add_opt('max_opds_ungrouped_items', ['--max-opds-ungrouped-items'], + default=100, + help=_('Group items in categories such as author/tags ' + 'by first letter when there are more than this number ' + 'of items. Default: %default. Set to a large number ' + 'to disable grouping.')) return c def main(): diff --git a/src/calibre/library/server/content.py b/src/calibre/library/server/content.py index 12bd786322..4dd32eb284 100644 --- a/src/calibre/library/server/content.py +++ b/src/calibre/library/server/content.py @@ -127,10 +127,7 @@ class ContentServer(object): cherrypy.log('User agent: '+ua) if want_opds: - return self.stanza(search=kwargs.get('search', None), sortby=kwargs.get('sortby',None), authorid=kwargs.get('authorid',None), - tagid=kwargs.get('tagid',None), - seriesid=kwargs.get('seriesid',None), - offset=kwargs.get('offset', 0)) + return self.opds(version=0) if want_mobile: return self.mobile() diff --git a/src/calibre/library/server/opds.py b/src/calibre/library/server/opds.py index 2315b781aa..d396d73af2 100644 --- a/src/calibre/library/server/opds.py +++ b/src/calibre/library/server/opds.py @@ -25,7 +25,7 @@ BASE_HREFS = { 1 : '/opds', } -STANZA_FORMATS = frozenset(['epub', 'pdb']) +STANZA_FORMATS = frozenset(['epub', 'pdb', 'pdf', 'cbr', 'cbz', 'djvu']) def url_for(name, version, **kwargs): if not name.endswith('_'): @@ -121,7 +121,7 @@ def CATALOG_GROUP_ENTRY(item, category, base_href, version, updated): TITLE(item.text), ID(id_), UPDATED(updated), - E.content(_('%d books')%item.count, type='text'), + E.content(_('%d items')%item.count, type='text'), link ) @@ -445,7 +445,7 @@ class OPDSServer(object): id_ = 'calibre-category-feed:'+which - MAX_ITEMS = 50 + MAX_ITEMS = self.opts.max_opds_ungrouped_items if len(items) <= MAX_ITEMS: max_items = self.opts.max_opds_items @@ -459,8 +459,6 @@ class OPDSServer(object): self.text, self.count = text, count starts = set([x.name[0] for x in items]) - if len(starts) > MAX_ITEMS: - starts = set([x.name[:2] for x in items]) category_groups = OrderedDict() for x in sorted(starts, cmp=lambda x,y:cmp(x.lower(), y.lower())): category_groups[x] = len([y for y in items if diff --git a/src/calibre/manual/customize.rst b/src/calibre/manual/customize.rst index abf3165a69..e5635d5165 100644 --- a/src/calibre/manual/customize.rst +++ b/src/calibre/manual/customize.rst @@ -8,16 +8,25 @@ Customizing |app| ================================== |app| has a highly modular design. Various parts of it can be customized. You can learn how to create -*recipes* to add new sources of online content to |app| in the Section :ref:`news`. Here, you will learn how to -use *plugins* to customize and control various aspects of |app|'s behavior. - -Theer are different kinds of plugins, corresponding to different aspects of |app|. As more and more aspects of |app| -are modularized, new plugin types will be added. +*recipes* to add new sources of online content to |app| in the Section :ref:`news`. Here, you will learn, +first, how to use environment variables and *tweaks* to customize |app|'s behavior and then how to +use *plugins* to add funtionality to |app|. .. contents:: :depth: 2 :local: +Environment variables +----------------------- + + * ``CALIBRE_CONFIG_DIRECTORY`` + * ``CALIBRE_OVERRIDE_DATABASE_PATH`` + * ``CALIBRE_DEVELOP_FROM`` + * ``CALIBRE_OVERRIDE_LANG`` + * ``SYSFS_PATH`` + * ``http_proxy`` + + A Hello World plugin ------------------------ diff --git a/src/calibre/manual/faq.rst b/src/calibre/manual/faq.rst index e606505194..833d99f28e 100644 --- a/src/calibre/manual/faq.rst +++ b/src/calibre/manual/faq.rst @@ -135,29 +135,18 @@ turned into a collection on the reader. Note that the PRS-500 does not support c How do I use |app| with my iPad/iPhone/iTouch? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -You can access your calibre library on a iPad/iPhone/iTouch over the air using the calibre content server. +The easiest way to browse your |app| collection on your Apple device (iPad/iPhone/iPod) is by using the *free* Stanza app, available from the Apple app store. You need at least Stanza version 3.0. Stanza allows you to access your |app| collection wirelessly, over the air. First perform the following steps in |app| * Set the Preferred Output Format in |app| to EPUB (The output format can be set under Preferences->General) + * Set the output profile to iPad (this will work for iPhone/iPods as well), under Preferences->Conversion->Page Setup * Convert the books you want to read on your iPhone to EPUB format by selecting them and clicking the Convert button. * Turn on the Content Server in |app|'s preferences and leave |app| running. -For an iPad: +Install the free Stanza reader app on your iPad/iPhone/iTouch using iTunes. -Install the ReadMe app on your iPad using iTunes. Open the Readme builtin browser and browse to:: - - http://192.168.1.2:8080/ - -Replace ``192.168.1.2`` with the local IP address of the computer running |app|. If you have changed the port the |app| content server is running on, you will have to change ``8080`` as well to the new port. The local IP address is the IP address you computer is assigned on your home network. A quick Google search will tell you how to find out your local IP address. - -The books in your |app| library will be presented as a list, 25 entries at a time. Click the right arrow to go to the next 25. You can also type in the search box to find specific books. Just click on the EPUB link of the book you want and it will be downloaded into your ReadMe library. - -For an iPhone/iTouch: - -Install the free Stanza reader app on your iPhone/iTouch using iTunes. - -Now you should be able to access your books on your iPhone by opening Stanza. Go to "Get Books" and then click the "Shared" tab. Under Shared you will see an entry "Books in calibre". If you don't, make sure your iPhone is connected using the WiFi network in your house, not 3G. If the |app| catalog is still not detected in Stanza, you can add it manually in Stanza. To do this, click the "Shared" tab, then click the "Edit" button and then click "Add book source" to add a new book source. In the Add Book Source screen enter whatever name you like and in the URL field, enter the following:: +Now you should be able to access your books on your iPhone by opening Stanza. Go to "Get Books" and then click the "Shared" tab. Under Shared you will see an entry "Books in calibre". If you don't, make sure your iPad/iPhone is connected using the WiFi network in your house, not 3G. If the |app| catalog is still not detected in Stanza, you can add it manually in Stanza. To do this, click the "Shared" tab, then click the "Edit" button and then click "Add book source" to add a new book source. In the Add Book Source screen enter whatever name you like and in the URL field, enter the following:: http://192.168.1.2:8080/ @@ -165,7 +154,12 @@ Replace ``192.168.1.2`` with the local IP address of the computer running |app|. If you get timeout errors while browsing the calibre catalog in Stanza, try increasing the connection timeout value in the stanza settings. Go to Info->Settings and increase the value of Download Timeout. -Note that neither the Stanza, nor the ReadMe apps are in anyway associated with |app|. +Alternative for the iPad +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +As of |app| version 0.7.0, you can plugin your iPad into the computer using its charging cable, and |app| will detect it and show you a list of books on the iPad. You can then use the Send to device button to send books directly to iBooks on the iPad. + +This method only works on Windows XP and higher and OS X 10.5 and higher. Linux is not supported (iTunes is not available in linux) and OS X 10.4 is not supported. How do I use |app| with my Android phone? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/src/calibre/manual/gui.rst b/src/calibre/manual/gui.rst index 0d79c77e55..dd0451c087 100644 --- a/src/calibre/manual/gui.rst +++ b/src/calibre/manual/gui.rst @@ -9,7 +9,7 @@ The Graphical User Interface *(GUI)* provides access to all library management and ebook format conversion features. The basic workflow for using |app| is to first add books to the library from your hard disk. |app| will automatically try to read metadata from the books and add them -to its internal database. Once they are in the database, you can performa various +to its internal database. Once they are in the database, you can perform a various :ref:`actions` on them that include conversion from one format to another, transfer to the reading device, viewing on your computer, editing metadata, including covers, etc. @@ -241,9 +241,9 @@ Now, you can access your saved search in the Tag Browser under "Searches". A sin .. _configuration: -Configuration +Preferences --------------- -The configuration dialog allows you to set some global defaults used by all of |app|. To access it, click the |cbi|. +The Preferences dialog allows you to change the way various aspects of |app| work. To access it, click the |cbi|. .. |cbi| image:: images/configuration.png @@ -251,7 +251,7 @@ The configuration dialog allows you to set some global defaults used by all of | Guessing metadata from file names ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In the :guilabel:`Advanced` section of the configuration dialog, you can specify a regularexpression that |app| will use to try and guess metadata from the names of ebook files +In the :guilabel:`Add/Save` section of the configuration dialog, you can specify a regular expression that |app| will use to try and guess metadata from the names of ebook files that you add to the library. The default regular expression is:: title - author @@ -265,18 +265,13 @@ will be interpreted to have the title: Foundation and Earth and author: Isaac As .. tip:: If the filename does not contain the hyphen, the regular expression will fail. -.. tip:: - If you want to only use metadata guessed from filenames and not metadata read from the file itself, you can tell |app| to do this, via the configuration dialog, accessed by the button to the right - of the search box. - .. _book_details: Book Details ------------- .. image:: images/book_details.png -The Book Details display shows you extra information and the cover for the currently selected book. THe comments section is truncated if the comments are too long. To see the full comments as well as -a larger image of the cover, click anywhere in the Book Details area. +The Book Details display shows you extra information and the cover for the currently selected book. .. _jobs: diff --git a/src/calibre/manual/news_recipe.rst b/src/calibre/manual/news_recipe.rst index c840cefb53..14cc41d436 100644 --- a/src/calibre/manual/news_recipe.rst +++ b/src/calibre/manual/news_recipe.rst @@ -111,6 +111,8 @@ Pre/post processing of downloaded HTML .. automember:: BasicNewsRecipe.remove_javascript +.. automethod:: BasicNewsRecipe.prepreprocess_html + .. automethod:: BasicNewsRecipe.preprocess_html .. automethod:: BasicNewsRecipe.postprocess_html diff --git a/src/calibre/translations/ar.po b/src/calibre/translations/ar.po index 5fddfb3ed6..378fa227fa 100644 --- a/src/calibre/translations/ar.po +++ b/src/calibre/translations/ar.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2010-05-21 22:47+0000\n" -"PO-Revision-Date: 2010-05-22 17:09+0000\n" +"POT-Creation-Date: 2010-06-05 01:06+0000\n" +"PO-Revision-Date: 2010-06-04 16:43+0000\n" "Last-Translator: Kovid Goyal \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-05-23 03:54+0000\n" +"X-Launchpad-Export-Date: 2010-06-05 03:32+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 @@ -27,9 +27,7 @@ msgstr "لا يفعل شيءً" #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 #: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 #: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:204 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:347 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:98 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:101 #: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56 @@ -42,9 +40,11 @@ msgstr "لا يفعل شيءً" #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896 #: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:230 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:261 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:264 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:270 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:273 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:373 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:19 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:20 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 @@ -53,9 +53,8 @@ msgstr "لا يفعل شيءً" #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:118 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:912 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:943 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1055 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28 #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 @@ -71,9 +70,9 @@ msgstr "لا يفعل شيءً" #: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:818 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 #: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:909 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:914 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:980 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:908 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:913 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:979 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:108 @@ -97,46 +96,47 @@ msgstr "لا يفعل شيءً" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:87 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:88 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:97 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:98 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:280 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:170 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:177 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:574 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:583 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:862 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:865 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:657 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:666 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:946 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:949 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:123 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:460 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:419 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:441 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:969 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1096 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1694 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1697 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:489 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:338 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:823 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:986 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1797 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1800 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:311 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:213 #: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:260 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:680 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:717 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1111 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1113 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1235 -#: /home/kovid/work/calibre/src/calibre/library/server.py:671 -#: /home/kovid/work/calibre/src/calibre/library/server.py:747 -#: /home/kovid/work/calibre/src/calibre/library/server.py:794 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:308 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:320 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:884 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:921 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1400 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1402 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1524 +#: /home/kovid/work/calibre/src/calibre/library/server/mobile.py:268 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:131 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:134 +#: /home/kovid/work/calibre/src/calibre/library/server/xml.py:68 #: /home/kovid/work/calibre/src/calibre/utils/localization.py:114 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 #: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 @@ -158,11 +158,11 @@ msgstr "نوع الملف" msgid "Metadata reader" msgstr "قارئ دليل المعلومات" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:237 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:235 msgid "Metadata writer" msgstr "كاتب دليل المعلومات" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:267 +#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:263 msgid "Catalog generator" msgstr "مولد الكاتالوج" @@ -279,7 +279,7 @@ msgstr "" "وثيقة الإدخال." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:258 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:266 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" @@ -291,62 +291,62 @@ msgid "This profile is intended for the SONY PRS 300." msgstr "ملف التعريف هذا هو المقصود لجهاز سوني PRS 300." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:78 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:292 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:300 msgid "This profile is intended for the SONY PRS-900." msgstr "ملف التعريف هذا هو المقصود لجهاز سوني PRS 900." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:86 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:322 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:330 msgid "This profile is intended for the Microsoft Reader." msgstr "هذا الطور يستخدم مع Microsoft Reader" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:97 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:333 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:341 msgid "This profile is intended for the Mobipocket books." msgstr "ملف التعريف هذا يستخدم مع كتب Mobipocket ." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:110 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:346 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:354 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "ملف التعريف هذا يستخدم مع Hanlin V3 وأمثاله." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:122 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:358 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:366 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "ملف التعريف هذا يستخدم مع Hanlin V5 وأمثاله." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:132 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:366 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:374 msgid "This profile is intended for the Cybook G3." msgstr "ملف التعريف هذا يستخدم مع Cybook G3" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:145 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:379 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:387 msgid "This profile is intended for the Cybook Opus." msgstr "ملف التعريف هذا يستخدم مع Cybook Opus ." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:157 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:390 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:398 msgid "This profile is intended for the Amazon Kindle." msgstr "ملف التعريف هذا يستخدم مع Amazon Kindle ." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:169 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:425 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:433 msgid "This profile is intended for the Irex Illiad." msgstr "ملف التعريف هذا يستخدم مع Irex Illiad ." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:181 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:438 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:446 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "ملف التعريف هذا يستخدم مع IRex Digital Reader 1000 ." #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:452 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:460 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "" #: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:466 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:474 msgid "This profile is intended for the B&N Nook." msgstr "ملف التعريف هذا يستخدم مع B&N Nook ." @@ -363,24 +363,24 @@ msgstr "" "ملف التعريف هذا يحاول تقديم افتراضات عاقلة و مفيدة إذا كنت ترغب في إصدار " "وثيقة للقراءة في جهاز الكمبيوتر أو على مجموعة من الأجهزة." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:248 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:254 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:271 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:279 msgid "This profile is intended for the Kobo Reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:283 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:291 msgid "This profile is intended for the SONY PRS-300." msgstr "ملف التعريف هذا يستخدم مع سوني PRS-300 ." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:301 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:309 msgid "This profile is intended for the 5-inch JetBook." msgstr "ملف التعريف هذا يستخدم مع الخمسة بوصة JetBook ." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:310 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:318 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -388,7 +388,7 @@ msgstr "" "ملف التعريف هذا يستخدم مع سوني خط إنتاج PRS . الـ500/505/700 الخ ، في وضع " "أفقي.غالباً مفيد للكاريكاتيرات." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:408 +#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:416 msgid "This profile is intended for the Amazon Kindle DX." msgstr "ملف التعريف هذا يستخدم مع Amazon Kindle DX" @@ -464,10 +464,59 @@ msgid "" "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:67 +#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:68 msgid "Communicate with S60 phones." msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:57 +msgid "Communicate with iBooks through iTunes." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:63 +msgid "Apple device detected, launching iTunes, please wait ..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:125 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:143 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:146 +msgid "Updating device metadata listing..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:211 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:242 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:827 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:964 +msgid "%d of %d" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:248 +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:969 +msgid "finished" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:421 +msgid "" +"Some books not found in iTunes database.\n" +"Delete using the iBooks app.\n" +"Click 'Show Details' for a list." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:614 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 +msgid "settings for device drivers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:616 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 +msgid "Ordered list of formats the device will accept" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/apple/driver.py:729 +msgid "" +"Some cover art could not be converted.\n" +"Click 'Show Details' for a list." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/binatone/driver.py:17 msgid "Communicate with the Binatone Readme eBook reader." msgstr "" @@ -502,15 +551,25 @@ msgstr "" msgid "Communicate with the ESlick eBook reader." msgstr "التواصل مع القارئ الكتاب الاليكترونى ESlick ." +#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:16 +#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:30 +msgid "Use an arbitrary folder as a device." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/folder_device/driver.py:26 +#: /home/kovid/work/calibre/src/calibre/devices/interface.py:23 +msgid "Device Interface" +msgstr "واجهة الجهاز" + #: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:19 msgid "Communicate with Hanlin V3 eBook readers." msgstr "التواصل مع القارئ الكتاب الاليكترونى Hanlin V3 ." -#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:95 +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:90 msgid "Communicate with Hanlin V5 eBook readers." msgstr "التواصل مع القارئ الكتاب الاليكترونى Hanlin V5 ." -#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:114 +#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:109 msgid "Communicate with the BOOX eBook reader." msgstr "التواصل مع القارئ الكتاب الاليكترونى BOOX ." @@ -518,15 +577,19 @@ msgstr "التواصل مع القارئ الكتاب الاليكترونى BOO msgid "Communicate with the Hanvon N520 eBook reader." msgstr "التواصل مع القارئ الكتاب الاليكترونى Hanvon N520 ." -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:41 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:40 +msgid "Communicate with The Book reader." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:51 msgid "Communicate with the SpringDesign Alex eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:57 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:67 msgid "Communicate with the Azbooka" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:70 +#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:80 msgid "Communicate with the Elonex EB 511 eBook reader." msgstr "اﻹتصال مع الـElonex EB 511 القارئ اﻹلكتروني" @@ -540,10 +603,6 @@ msgstr "التواصل مع القارئ الكتاب الاليكترونى IRe msgid "John Schember" msgstr "John Schember" -#: /home/kovid/work/calibre/src/calibre/devices/interface.py:23 -msgid "Device Interface" -msgstr "واجهة الجهاز" - #: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:16 msgid "Communicate with the IRex Digital Reader 1000 eBook reader." msgstr "التواصل مع القارئ الكتاب الاليكترونى IRex Digital Reader 1000 ." @@ -564,23 +623,23 @@ msgstr "التواصل مع القارئ الكتاب الاليكترونى Jet msgid "Communicate with the Kindle eBook reader." msgstr "التواصل مع القارئ الكتاب الاليكترونى Kindle ." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:152 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:147 msgid "Communicate with the Kindle 2 eBook reader." msgstr "التواصل مع القارئ الكتاب الاليكترونى Kindle 2 ." -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:162 +#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:157 msgid "Communicate with the Kindle DX eBook reader." msgstr "التواصل مع القارئ الكتاب الاليكترونى Kindle DX ." +#: /home/kovid/work/calibre/src/calibre/devices/kobo/driver.py:14 +msgid "Communicate with the Kobo Reader" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/devices/misc.py:15 msgid "Communicate with the Palm Pre" msgstr "الإتصال مع جهاز البالم بري" #: /home/kovid/work/calibre/src/calibre/devices/misc.py:35 -msgid "Communicate with the Kobo Reader" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:56 msgid "Communicate with the Booq Avant" msgstr "" @@ -608,25 +667,11 @@ msgstr "التواصل مع القارئ الكتاب الاليكترونى Nuu msgid "Communicate with the Sony PRS-500 eBook reader." msgstr "التواصل مع قارئ الكتاب الاليكتروني سوني PRS-500 ." -#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:104 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:107 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:121 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:44 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:47 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:50 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:70 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:80 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:89 -msgid "Getting list of books on device..." -msgstr "يجري إحصاء قائمة كتب من الجهاز..." +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:23 +msgid "Communicate with all the Sony eBook readers." +msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 -msgid "Communicate with the Sony PRS-300/505/500 eBook reader." -msgstr "التواصل مع قارئات الكتاب الاليكتروني سوني PRS-300/505/500 ." - -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:58 +#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:61 msgid "" "Comma separated list of metadata fields to turn into collections on the " "device. Possibilities include: " @@ -634,28 +679,10 @@ msgstr "" "ضع علامة الفاصلة للفصل بين مجموعة من البيانات الوصفية لكي تكون مجموعة في " "الجهاز . و تشمل الاحتمالات التالية: " -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:149 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:151 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:115 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:117 -msgid "Transferring books to device..." -msgstr "يجري تحويل الكتب إلى الجهاز..." - -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:189 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:196 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:161 -msgid "Removing books from device..." -msgstr "يجري حذف الكتب من الجهاز..." - -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:224 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:176 -msgid "Sending metadata to device..." -msgstr "يجري إرسال دليل المعلومات. إلى الجهاز..." - -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:230 -msgid "Communicate with the Sony PRS-600/700/900 eBook reader." -msgstr "التواصل مع قارئات الكتاب الاليكتروني سوني PRS-600/700/900 ." +#: /home/kovid/work/calibre/src/calibre/devices/prs505/sony_cache.py:140 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 +msgid "Unnamed" +msgstr "" #: /home/kovid/work/calibre/src/calibre/devices/sne/driver.py:17 msgid "Communicate with the Samsung SNE eBook reader." @@ -665,65 +692,66 @@ msgstr "الإتصال مع جهاز قارئ الكتب الالكترونية msgid "Communicate with the Teclast K3 reader." msgstr "اﻹتصال مع الـ Teclast K3 reader ." -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:45 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:37 msgid "Communicate with the Newsmy reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:60 +#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:49 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:252 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:247 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "لم يتمكن من كشف القرص %s. حاول إعادة التشغيل." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:425 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:427 msgid "Unable to detect the %s mount point. Try rebooting." msgstr "غير قادر على الكشف عن %s نقطة التحميل. حاول إعادة التشغيل." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:490 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:492 msgid "Unable to detect the %s disk drive." msgstr "%s غير قادر على اكتشاف عن الذاكرة" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:583 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:585 msgid "Could not find mount helper: %s." msgstr "غير قادر على جلب المساعد : %s ." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:595 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:597 msgid "" "Unable to detect the %s disk drive. Your kernel is probably exporting a " "deprecated version of SYSFS." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:603 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:605 msgid "Unable to mount main memory (Error code: %d)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:740 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:742 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:744 msgid "The reader has no storage card in this slot." msgstr "لا يوجد بطاقات تخزين في القارئ ." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:744 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:746 msgid "Selected slot: %s is not supported." msgstr "الفتحة المختارة : %s ليست مدعومة ." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:777 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:779 msgid "There is insufficient free space in main memory" msgstr "لا توجد مساحة كافية في الذاكرة الرئيسية" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:779 #: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:781 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:783 msgid "There is insufficient free space on the storage card" msgstr "لا توجد مساحة كافية في بطاقة التخزين" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:811 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:817 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:842 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:589 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:995 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:813 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:819 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:847 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:239 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:147 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:158 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1284 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:120 msgid "News" msgstr "الأخبار" @@ -731,14 +759,6 @@ msgstr "الأخبار" msgid "Configure Device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 -msgid "settings for device drivers" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 -msgid "Ordered list of formats the device will accept" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:32 msgid "Place files in sub directories if the device supports them" msgstr "" @@ -761,20 +781,43 @@ msgstr "" msgid "Communicate with an eBook reader." msgstr "الاتصال مع جهاز قارئ إلكتروني ." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:36 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:44 msgid "Get device information..." msgstr "يجري إحصاء معلومات الجهاز..." -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:132 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:140 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:53 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:56 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:59 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:119 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:126 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:149 +msgid "Getting list of books on device..." +msgstr "يجري إحصاء قائمة كتب من الجهاز..." + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:174 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:176 +msgid "Transferring books to device..." +msgstr "يجري تحويل الكتب إلى الجهاز..." + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:191 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:220 msgid "Adding books to device metadata listing..." msgstr "إضافة كتب لقائمة للبيانات الوصفية للجهاز" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:165 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:170 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:224 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:242 +msgid "Removing books from device..." +msgstr "يجري حذف الكتب من الجهاز..." + +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:246 +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:251 msgid "Removing books from device metadata listing..." msgstr "" +#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:269 +msgid "Sending metadata to device..." +msgstr "يجري إرسال دليل المعلومات. إلى الجهاز..." + #: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:41 msgid "%prog [options] mybook.chm" msgstr "" @@ -1395,13 +1438,13 @@ msgstr "" msgid "Creating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:205 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:56 msgid "" "Extract the contents of the generated EPUB file to the specified directory. " "The contents of the directory are first deleted, so be careful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:211 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:62 msgid "" "Turn off splitting at page breaks. Normally, input files are automatically " "split at every page break into two files. This gives an output ebook that " @@ -1410,21 +1453,21 @@ msgid "" "turn off splitting on page breaks." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:222 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:73 msgid "" "Split all HTML files larger than this size (in KB). This is necessary as " "most EPUB readers cannot handle large file sizes. The default of %defaultKB " "is the size required for Adobe Digital Editions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:229 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:80 msgid "" "Normally, if the input file has no cover and you don't specify one, a " "default cover is generated with the title, authors, etc. This option " "disables the generation of this cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:235 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:86 msgid "" "Do not use SVG for the book cover. Use this option if your EPUB is going to " "be used ona device that does not support SVG, like the iPhone or the " @@ -1432,7 +1475,7 @@ msgid "" "blank page." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:243 +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:94 msgid "" "When using an SVG cover, this option will cause the cover to scale to cover " "the available screen area, but still preserve its aspect ratio (ratio of " @@ -1441,6 +1484,10 @@ msgid "" "option the image may be slightly distorted, but there will be no borders." msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:169 +msgid "Start" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:144 #: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 #: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 @@ -1706,80 +1753,84 @@ msgstr "ضم أسرة الخطوط أحادية القياس" msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:372 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:97 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:174 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1159 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:828 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:538 msgid "Title" msgstr "العنوان" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:373 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:175 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:421 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1160 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:48 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:340 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:829 msgid "Author(s)" msgstr "المؤلف أو المؤلفون" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:365 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:374 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:53 msgid "Publisher" msgstr "الناشر" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:366 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "المنتج" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:367 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:376 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:377 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:137 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1005 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:149 msgid "Comments" msgstr "التعليقات" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:366 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1104 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1163 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:285 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1001 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:106 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:130 msgid "Tags" msgstr "الوسوم" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:382 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1010 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:105 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:82 msgid "Series" msgstr "السلسلة" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:378 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:387 msgid "Language" msgstr "اللغة" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:380 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1103 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:993 msgid "Timestamp" msgstr "ختم التوقيت" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:382 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:391 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:51 msgid "Published" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:384 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:393 msgid "Rights" msgstr "" @@ -1886,41 +1937,41 @@ msgstr "تم حفظ الغلاف في" msgid "No cover found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:34 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:33 msgid "Metadata download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:110 msgid "ratings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:110 msgid "tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:112 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 msgid "description/reviews" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:113 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:112 msgid "Download %s from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:137 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:136 msgid "Downloads metadata from Google Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:153 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:152 msgid "Downloads metadata from isbndb.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:181 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:180 msgid "" "To use isbndb.com you must sign up for a %sfree account%s and enter your " "access key below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:189 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:188 msgid "Downloads social metadata from amazon.com" msgstr "" @@ -1980,8 +2031,8 @@ msgid "" "Fetch a cover image for the book identified by ISBN from LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1103 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1372 +#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1220 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1371 msgid "Cover" msgstr "الغلاف" @@ -2020,74 +2071,74 @@ msgstr "" msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1373 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1372 msgid "Title Page" msgstr "صقحة العنوان" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1374 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1373 #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:194 msgid "Table of Contents" msgstr "المحتويات" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1375 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1374 msgid "Index" msgstr "الفهرس" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1376 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1375 msgid "Glossary" msgstr "المسرد" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1377 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1376 msgid "Acknowledgements" msgstr "شكر وتقدير" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1378 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1377 msgid "Bibliography" msgstr "ببليوغرافيا" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1379 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1378 msgid "Colophon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1380 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1379 msgid "Copyright" msgstr "حقوق المؤلف" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1381 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1380 msgid "Dedication" msgstr "الإهداء" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1382 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1381 msgid "Epigraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1383 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1382 msgid "Foreword" msgstr "افتتاحية" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1384 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1383 msgid "List of Illustrations" msgstr "قائمة الرسوم" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1385 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1384 msgid "List of Tables" msgstr "قائمة الجداول" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1386 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1385 msgid "Notes" msgstr "الملاحظات" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1387 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1386 msgid "Preface" msgstr "افتتاحية" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1388 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1387 msgid "Main Text" msgstr "النصّ الرئيسي" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39 +#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:41 msgid "%s format books are not supported" msgstr "الكتب بتهيئة %s ليست مدعومة" @@ -2104,10 +2155,6 @@ msgid "" "Could not find reasonable point at which to split: %s Sub-tree size: %d KB" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 -msgid "Unnamed" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:32 msgid "OPF/NCX/etc. generation options." msgstr "" @@ -2131,7 +2178,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:22 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:22 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:23 msgid "" "Normally calibre treats blank lines as paragraph markers. With this option " "it will assume that every line represents a paragraph instead." @@ -2139,7 +2186,7 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:26 #: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:26 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:27 msgid "" "Normally calibre treats blank lines as paragraph markers. With this option " "it will assume that every line starting with an indent (either a tab or 2+ " @@ -2345,28 +2392,34 @@ msgstr "" msgid "Split Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:59 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:31 msgid "" "The unit of measure. Default is inch. Choices are %s Note: This does not " "override the unit for margins!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:64 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:36 msgid "" "The size of the paper. This size will be overridden when an output profile " "is used. Default is letter. Choices are %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:68 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:40 msgid "" "Custom size of the document. Use the form widthxheight EG. `123x321` to " "specify the width and height. This overrides any specified paper-size." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:73 +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:45 msgid "The orientation of the page. Default is portrait. Choices are %s" msgstr "" +#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:49 +msgid "" +"Preserve the aspect ratio of the cover, instead of stretching it to fill the " +"ull first page of the generated pdf." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:55 msgid "Could not find pdftohtml, check it is in your PATH" msgstr "" @@ -2395,13 +2448,19 @@ msgid "" "slowest." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:33 +msgid "" +"Normally extra spaces are condensed into a single space. With this option " +"all spaces will be displayed." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:36 msgid "" "Run the text input through the markdown pre-processor. To learn more about " "markdown see" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:35 +#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:39 msgid "Do not insert a Table of Contents into the output text." msgstr "" @@ -2432,122 +2491,126 @@ msgid "" "allows max-line-length to be below the minimum" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 msgid "Confirm before deleting" msgstr "تأكيد قبل الحذف" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 msgid "Toolbar icon size" msgstr "حجم أيقونات شريط الأدوات" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 msgid "Show button labels in the toolbar" msgstr "إظهار تسميات الأزرار في شريط الأدوات" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 msgid "Notify when a new version is available" msgstr "Notify when a new version is available" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 msgid "Sort tags list by popularity" msgstr "ترتيب الوسوم حسب الشهرة" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 msgid "Defaults for conversion to LRF" msgstr "الإفتراضي للتحويل إلى LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:53 msgid "Options for the LRF ebook viewer" msgstr "الخيارات لمستعرض كتب LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 msgid "Formats that are viewed using the internal viewer" msgstr "تهيئات التي تعرض عن طريق المستعرض الداخلي" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:60 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 msgid "Show system tray icon" msgstr "إظهار أيقونة صينية النظام" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 msgid "Upload downloaded news to device" msgstr "رفع أخبار تم تنزيلها إلى الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 msgid "Delete books from library after uploading to device" msgstr "حذف كتب من المكتبة بعد رفعها إلى الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:69 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:69 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:71 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:97 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:99 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:475 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:101 +msgid "tag browser categories not to display" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:138 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:476 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:172 msgid "Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:172 msgid "Copy to Clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:382 msgid "Choose Files" msgstr "" @@ -2555,68 +2618,211 @@ msgstr "" msgid "Searching in" msgstr "يتم البحث في" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:229 msgid "Adding..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:238 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:242 msgid "Searching in all sub-directories..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:251 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:255 msgid "Path error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:256 msgid "The specified directory could not be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:256 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:599 msgid "No books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1822 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1929 msgid "No books found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:327 msgid "Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:336 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:340 msgid "Adding failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:337 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:341 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:349 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:353 msgid "Duplicates found!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:350 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:354 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/add.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:357 msgid "Adding duplicates..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:419 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:423 msgid "Saving..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/add.py:476 msgid "Saved" msgstr "تم الحفظ" +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:57 +msgid "Searching for sub-folders" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:62 +msgid "Searching for books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:74 +msgid "Looking for duplicates based on file hash" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:109 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:65 +msgid "Choose root folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:137 +msgid "Invalid root folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:138 +msgid "is not a valid root folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/__init__.py:148 +msgid "Add books to calibre" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:21 +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:57 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:41 +msgid "WizardPage" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:22 +msgid "Scanning root folder for books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/scan_ui.py:23 +msgid "This may take a few minutes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:58 +msgid "Choose the location to add books from" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:59 +msgid "Select a folder on your hard disk" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:60 +msgid "" +"

calibre can scan your computer for existing books automatically. These " +"books will then be copied into the calibre library. This wizard will " +"help you customize the scanning and import process for your existing book " +"collection.

\n" +"

Choose a root folder. Books will be searched for only inside this folder " +"and any sub-folders.

\n" +"

Make sure that the folder you chose for your calibre library is " +"not under the root folder you choose.

" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:63 +msgid "&Root folder:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:64 +msgid "" +"This folder and its sub-folders will be scanned for books to import into " +"calibre's library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:604 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:87 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:90 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:156 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:159 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:126 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:135 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 +msgid "..." +msgstr "..." + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:67 +msgid "Handle multiple files per book" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:68 +msgid "" +"&One book per folder, assumes every ebook file in a folder is the same book " +"in a different format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/add_wizard/welcome_ui.py:69 +msgid "" +"&Multiple books per folder, assumes every ebook file is a different book" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 msgid "CSV/XML Options" msgstr "" @@ -2668,11 +2874,11 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:31 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:35 #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:39 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:42 #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:28 #: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:42 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:45 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:49 #: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67 @@ -2693,9 +2899,9 @@ msgid "E-book options" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:282 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:958 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:976 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:222 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1247 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1265 msgid "Catalog" msgstr "" @@ -2860,46 +3066,6 @@ msgid "" "conversion parameters like Table of Contents and Chapter Detection." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:374 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:377 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:379 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:381 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 -msgid "..." -msgstr "..." - #: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 msgid "" "The debug process outputs the intermediate HTML generated at various stages " @@ -3171,38 +3337,38 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:99 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:101 msgid "Choose cover for " msgstr "إختار الغلاف لـ " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:106 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:108 msgid "Cannot read" msgstr "لا يمكن القراءة" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:109 msgid "You do not have permission to read the file: " msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:177 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:117 msgid "Error reading file" msgstr "خطأ في قراءة الملف" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:118 msgid "

There was an error reading from file:
" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:126 msgid " is not a valid picture" msgstr " ليست صورة صالحة" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:405 msgid "Book Cover" msgstr "غلاف الكتاب" @@ -3211,28 +3377,28 @@ msgid "Use cover from &source file" msgstr "استخدم غلاف من المصدر&" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:406 msgid "Change &cover image:" msgstr "تغيير صورة الغلاف&:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:407 msgid "Browse for an image to use as the cover of this book." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 msgid "&Title: " msgstr ":ال&عنوان " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "Change the title of this book" msgstr "تغيير عنوان هذا الكتاب" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 msgid "&Author(s): " msgstr "ال&مؤلف: " @@ -3247,19 +3413,19 @@ msgid "" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:167 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "&Publisher: " msgstr "&الناشر: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380 msgid "Ta&gs: " msgstr "الو&سوم: " #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:169 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

They can be any words or phrases, separated by commas." @@ -3268,22 +3434,22 @@ msgstr "" "مجموعة كلمات، مفرقة بفاصلة." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Series:" msgstr "&سلسلات:" #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:175 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:176 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 msgid "List of known series. You can add new series." msgstr "قائمة السلسلات المعروفة. بإمكانك إضافة سلسلات جديدة." #: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 msgid "Book " msgstr "الكتاب " @@ -3368,12 +3534,12 @@ msgid "PDB Input" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:43 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 msgid "Treat each &line as a paragraph" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:44 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:47 msgid "Assume print formatting" msgstr "" @@ -3401,32 +3567,36 @@ msgstr "" msgid "PDF Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:40 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:43 msgid "&Paper Size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:41 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:44 msgid "&Orientation:" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:45 +msgid "Preserve &aspect ratio of cover" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14 msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2067 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:76 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2174 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:82 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:81 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:82 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:97 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:100 msgid "Open book" msgstr "" @@ -3587,21 +3757,25 @@ msgstr "" msgid "TXT Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:45 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:48 msgid "Process using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:49 msgid "" "

Markdown is a simple markup language for text files, that allows for " "advanced formatting. To learn more visit markdown." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:47 +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:50 msgid "Do not insert Table of Contents into output text when using markdown" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:51 +msgid "Preserve &spaces" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 msgid "TXT Output" msgstr "" @@ -3707,211 +3881,268 @@ msgid "" "href=\"http://calibre-ebook.com/user_manual/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:77 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:143 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:110 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:130 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:238 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:242 +msgid "Undefined" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:131 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:133 +msgid "Yes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:52 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:132 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:134 +msgid "No" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:110 +msgid "star(s)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:111 +msgid "Unrated" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:352 +msgid "Remove all tags" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:373 +msgid "tags to add" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/custom_column_widgets.py:378 +msgid "tags to remove" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:39 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:138 msgid "Device no longer connected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:208 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:243 msgid "Get device information" msgstr "احصل على معلومات الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:269 msgid "Get list of books on device" msgstr "احصل على قائمة الكتب على الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:229 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 msgid "Get annotations from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:238 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:288 msgid "Send metadata to device" msgstr "ارسل الميتاداتا إلى الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:247 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:297 msgid "Upload %d books to device" msgstr "رفع %d كتاب إلى الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:262 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:312 msgid "Delete books from device" msgstr "حذف كتب من الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:329 msgid "Download books from device" msgstr "تنزيل الكتب من الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:289 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:339 msgid "View book on device" msgstr "عرض كتاب على الجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:296 -msgid "and delete from library" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:373 msgid "Set default send to device action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:324 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:331 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:333 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:335 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:390 msgid "Email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:346 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:353 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:401 msgid "Send to main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:355 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:403 msgid "Send to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:405 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:360 -msgid "Send specific format to main memory" +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:419 +msgid "Main Memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:362 -msgid "Send specific format to storage card A" +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:412 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:421 +msgid "Storage Card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:364 -msgid "Send specific format to storage card B" +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:414 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:423 +msgid "Storage Card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:437 +msgid "Send and delete from library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:438 +msgid "Send specific format" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:477 +msgid "Connect to folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:482 +msgid "Disconnect from folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:490 msgid "Fetch annotations (experimental)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:600 msgid "selected to send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:605 msgid "Choose format to send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:613 msgid "No device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:614 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:621 msgid "No card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:618 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:622 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:664 msgid "E-book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:667 msgid "Attached, you will find the e-book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:585 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:668 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180 msgid "by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:669 msgid "in the %s format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:599 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:682 msgid "Sending email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:636 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:728 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:788 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:904 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:911 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:712 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:719 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:811 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:871 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:990 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:997 msgid "No suitable formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:630 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:713 msgid "Auto convert the following books before sending via email?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:637 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:720 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:655 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:738 msgid "Failed to email books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:739 msgid "Failed to email the following books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:660 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:743 msgid "Sent by email:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:687 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:770 msgid "News:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:688 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:771 msgid "Attached is the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:699 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:782 msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:729 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:789 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:905 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:812 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:872 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:991 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:758 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:841 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:902 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:873 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:957 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:912 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:998 msgid "" "Could not upload the following books to the device, as no suitable formats " "were found. Convert the book(s) to a format supported by your device first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:960 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1046 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:961 +#: /home/kovid/work/calibre/src/calibre/gui2/device.py:1047 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" @@ -3931,9 +4162,9 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:115 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:373 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1101 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:292 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:991 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:102 msgid "Path" msgstr "المسار" @@ -3941,10 +4172,10 @@ msgstr "المسار" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:372 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:219 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:291 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:103 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:91 msgid "Formats" msgstr "التهيئات" @@ -3994,11 +4225,11 @@ msgstr "" msgid "Choose Format" msgstr "إختيار التهيئة" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:33 msgid "Set defaults for conversion of comics (CBR/CBZ files)" msgstr "ضبط الإفتراضي في تحويل الرسومات (ملفات CBZ/CBR)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:49 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 msgid "Set options for converting %s" msgstr "ضبط الخيارات لتحويل %s" @@ -4014,47 +4245,51 @@ msgstr "ال&مؤلف:" msgid "&Profile:" msgstr "&طور:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comments_dialog_ui.py:41 +msgid "Edit Comments" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:173 msgid "%(plugin_type)s %(plugins)s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:174 msgid "plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:183 msgid "" "\n" "Customization: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:199 msgid "Conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:199 msgid "General" msgstr "عام" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:199 msgid "Interface" msgstr "الواجهة" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:200 msgid "Add/Save" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:197 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:200 msgid "" "Email\n" "Delivery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:201 msgid "Advanced" msgstr "متقدّم" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:201 msgid "" "Content\n" "Server" @@ -4062,164 +4297,191 @@ msgstr "" "محتوى\n" "خادم" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:201 msgid "Plugins" msgstr "الملحقات" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:219 msgid "Auto send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:219 msgid "Email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:221 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:224 msgid "Formats to email. The first matching format will be sent." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:222 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:225 msgid "" "If checked, downloaded news will be automatically mailed
to this email " "address (provided it is in one of the listed formats)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:296 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:299 msgid "new email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:489 msgid "System port selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:490 msgid "" "The value %d you have chosen for the content server port is a system " -"port. You operating system may not allow the server to run on this " +"port. Your operating system may not allow the server to run on this " "port. To be safe choose a port number larger than 1024." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:492 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:837 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:930 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:190 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1641 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "خطأ" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:493 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:510 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:513 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:514 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:498 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:515 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:566 msgid "No valid plugin path" msgstr "مسار الملحق غير صالح" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:567 msgid "%s is not a valid plugin path" msgstr "%s ليس مسار لملحق صالح" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:570 msgid "Choose plugin" msgstr "إختيار الملحق" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:582 msgid "Plugin cannot be disabled" msgstr "لا يمكن تعطيل الملحق" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:583 msgid "The plugin: %s cannot be disabled" msgstr "الملحق: %s لا يمكن تعطيله" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:592 msgid "Plugin not customizable" msgstr "لا يمكن تخصيص الملحق" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:576 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:593 msgid "Plugin: %s does not need customization" msgstr "الملحق: %s لا يحتاج التخصيص" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:601 msgid "Customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:622 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:639 msgid "Cannot remove builtin plugin" msgstr "لم يمكن حذف الملحق المضمن" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:623 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:640 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr " لا يمكن حذفه. هذا ملحق مضمن في البرنامج. حاول تعطيله بدلاً من حذفه." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:656 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:671 +msgid "You must select a column to delete it" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:676 +msgid "The selected column is not a custom column" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:677 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 +msgid "Are you sure?" +msgstr "هل أنت متأكّد؟" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:678 +msgid "Do you really want to delete column %s and all its data?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:745 msgid "Error log:" msgstr "سجل الأخطاء:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:663 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:752 msgid "Access log:" msgstr "سجل النفاذ:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:701 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:780 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:767 msgid "Failed to start content server" msgstr "فشل في تشغيل خادم المحتوى" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:715 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:586 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:587 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:723 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:811 msgid "Invalid size" msgstr "حجم غير صالح" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:724 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:812 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:778 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:783 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:865 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:870 msgid "Invalid database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:866 msgid "Invalid database location " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:780 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:867 msgid "
Must be a directory." msgstr "
يجب أن يكون دليل." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:784 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:871 msgid "Invalid database location.
Cannot write to " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:818 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:876 +msgid "Must restart" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:877 +msgid "" +"The changes you made require that Calibre be restarted. Please restart as " +"soon as practical." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:911 msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:838 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:931 msgid "Failed to check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:843 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:936 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:844 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:937 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4330,259 +4592,275 @@ msgstr "" msgid "Sending to &device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:409 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:441 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201 msgid "Preferences" msgstr "التفضيلات" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "Browse for the new database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Show notification when &new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "&Overwrite author and title by default when fetching metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Default network &timeout:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid " seconds" msgstr " ثانية" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Choose &language (requires restart):" msgstr "إختر ال&لغة (يحتاج إعادة تشغيل):" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 msgid "Normal" msgstr "عادي" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 msgid "High" msgstr "مرتفع" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Low" msgstr "منخفض" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Job &priority:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "Preferred &output format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Preferred &input format order:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "Use &Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "Enable system &tray icon (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "Show ¬ifications in system tray" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +msgid "Show &splash screen at startup" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Search as you type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "Automatically send downloaded &news to ebook reader" msgstr "إرسال الأخبار& التي تم تنزيلها آلياً إلى قارئ الكتب الإلكترونية" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 msgid "Toolbar" msgstr "شريط الأدوات" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "Large" msgstr "كبير" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "Medium" msgstr "متوسط" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Small" msgstr "صغير" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 msgid "&Button size in toolbar" msgstr "&حجم الأزرار على شريط الأدوات" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Show &text in toolbar buttons" msgstr "إظهار النص& على أزرار شريط الأدوات" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "Select visible &columns in library view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 +msgid "Remove a user-defined column" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +msgid "Add a user-defined column" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:567 +msgid "Edit settings of a user-defined column" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "Use internal &viewer for:" msgstr "استخدم المستعرض& الداخلي في:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "Add an email address to which to send books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "&Add email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Make &default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 msgid "&Remove email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "" "calibre can send your books to you (or your reader) by email. Emails will be " "automatically sent for downloaded news to all email addresses that have Auto-" "send checked." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:576 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:577 msgid "&Check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:578 msgid "&Install command line tools" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:579 msgid "Open calibre &configuration directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:580 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:581 msgid "Debug &device detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:582 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:583 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:584 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&اسم المستخدم:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:585 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "&كلمة السرّ" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:586 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:587 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:588 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:589 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214 msgid "&Show password" msgstr "إظهار& كلمة السرّ" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:590 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:591 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:592 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:593 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:594 msgid "Run server &automatically on startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:595 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:596 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " @@ -4593,33 +4871,33 @@ msgid "" "the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:598 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:599 msgid "Enable/&Disable plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:600 msgid "&Customize plugin" msgstr "ت&خصيص الملحق" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:601 msgid "&Remove plugin" msgstr "&حذف الملحق" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:602 msgid "Add new plugin" msgstr "إضافة ملحق جديد" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:603 msgid "Plugin &file:" msgstr "&ملف الملحق:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:605 msgid "&Add" msgstr "&إضافة" @@ -4647,16 +4925,6 @@ msgstr "" msgid "Values can be edited" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:133 -msgid "Yes" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:134 -msgid "No" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:135 msgid "Text" msgstr "" @@ -4666,8 +4934,10 @@ msgid "Number" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:27 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:50 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:830 +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:537 msgid "Date" msgstr "تاريخ" @@ -4683,6 +4953,127 @@ msgstr "" msgid "Create and edit tag-based columns" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:18 +msgid "Text, column shown in the tag browser" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:21 +msgid "Comma separated text, like tags, shown in the tag browser" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:24 +msgid "Long text, like comments, not shown in the tag browser" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:29 +msgid "Floating point numbers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:31 +msgid "Integers" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:33 +msgid "Ratings, shown with stars" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:36 +msgid "Yes/No" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:60 +msgid "No column selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:61 +msgid "No column has been selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:65 +msgid "Selected column is not a user-defined column" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:96 +msgid "No lookup name was provided" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:98 +msgid "" +"The label must contain only letters and digits, and start with a letter" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:107 +msgid "No column heading was provided" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:113 +msgid "The lookup name %s is already used" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:123 +msgid "The heading %s is already used" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column.py:125 +msgid "" +"The lookup name must be lower case and cannot contain \":\"s or spaces" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:101 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:117 +msgid "Create or edit custom columns" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:102 +msgid "&Lookup name" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:103 +msgid "Column &heading" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:104 +msgid "" +"Used for searching the column. Must contain only digits and lower case " +"letters." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:105 +msgid "" +"Column heading in the library view and category name in the tag browser" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:106 +msgid "Column &type" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:107 +msgid "What kind of information will be kept in the column." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:108 +msgid "" +"

Date format. Use 1-4 'd's for day, 1-4 'M's for month, and 2 or 4 'y's " +"for year.

\n" +"

For example:\n" +"

    \n" +"
  • ddd, d MMM yyyy gives Mon, 5 Jan 2010
  • \n" +"
  • dd MMMM yy gives 05 January 10
  • \n" +"
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:114 +msgid "Use MMM yyyy for month + year, yyyy for year only" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:115 +msgid "Default: dd MMM yyyy." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_custom_column_ui.py:116 +msgid "Format for &dates" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:21 msgid "Getting debug information" msgstr "" @@ -4724,10 +5115,6 @@ msgstr "" msgid "Downloading social metadata, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 -msgid "Are you sure?" -msgstr "هل أنت متأكّد؟" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:50 msgid "&Show this warning again" msgstr "" @@ -4830,83 +5217,78 @@ msgstr "" msgid "Stop &all jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:22 -msgid "Editing meta information for %d books" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:24 +msgid "Editing meta information for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 msgid "Edit Meta information" msgstr "تحرير معلومات الميتا" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 -msgid "Meta information" -msgstr "معلومات الميتا" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "A&utomatically set author sort" msgstr "ضبط& ترتيب المؤلف آلياً" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:161 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:165 msgid "No change" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 msgid " stars" msgstr " نجمة" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:168 msgid "Add ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:170 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:171 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "Open Tag Editor" msgstr "فتح محرر الوسوم" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:172 msgid "&Remove tags:" msgstr "حذف& الوسوم:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:173 msgid "Comma separated list of tags to remove from the books. " msgstr "قائمة من الوسوم مفرقة بالفاصلة لحذفها من الكتب. " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:177 msgid "Remove &format:" msgstr "حذف الت&هيئة:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:178 msgid "&Swap title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:179 msgid "" "Selected books will be automatically numbered,\n" "in the order you selected them.\n" @@ -4914,195 +5296,220 @@ msgid "" "Book A will have series number 1 and Book B series number 2." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:168 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:183 msgid "Automatically number books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:184 +msgid "" +"Remove stored conversion settings for the selected books.\n" +"\n" +"Future conversion of these books will use the default settings." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:187 +msgid "Remove &stored conversion settings for the selected books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:412 +msgid "&Basic metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:189 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:413 +msgid "&Custom metadata" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:125 msgid "Not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:138 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1284 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:139 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1382 msgid "Books" msgstr "كتب" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:167 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:168 msgid "You do not have permission to read the following files:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:193 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:195 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:196 msgid "No format selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:205 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:207 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:208 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:262 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:255 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:257 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:261 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:263 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:298 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:300 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:413 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:418 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:442 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:447 msgid "This ISBN number is valid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:421 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:450 msgid "This ISBN number is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:546 msgid "Downloading cover..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:558 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:563 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:569 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:530 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:559 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:570 msgid "Could not fetch cover.
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:560 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:564 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:576 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:577 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:581 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:610 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:582 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:640 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:641 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:681 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:712 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:682 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:713 msgid "Could not open %s. Is it being used by another program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 msgid "Edit Meta Information" msgstr "تحرير معلومات الميتا" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +msgid "Meta information" +msgstr "معلومات الميتا" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "Author S&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 msgid "" "Automatically create the author sort entry based on the current author entry" msgstr "ينشئ مدخل ترتيب المؤلف حسب مدخل المؤلف الحالي" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid "Remove unused series (Series that have no books)" msgstr "حذف سلسلات غير مستخدمة (سلسلات التي لا تحتوي على كتب)" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 msgid "IS&BN:" msgstr "IS&BN:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 msgid "dd MMM yyyy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 msgid "&Date:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 msgid "&Comments" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 msgid "&Fetch metadata from server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 msgid "Available Formats" msgstr "التهيئات المتوفرة" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 msgid "Add a new format for this book to the database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 msgid "Remove the selected formats for this book from the database." msgstr "حذف التهيئات المختارة لهذا الكتاب من قاعدة البيانات." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:402 msgid "Set the cover for the book from the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:404 msgid "Update metadata from the metadata in the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:409 msgid "Reset cover to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:411 msgid "Download &cover" msgstr "" @@ -5114,48 +5521,81 @@ msgstr "" msgid "Aborting..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:120 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor.py:54 +msgid "" +"The current saved search will be permanently deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:83 +msgid "Saved Search Editor" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:84 +msgid "Saved Search: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:85 +msgid "Select a saved search to edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:86 +msgid "Delete this selected saved search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:88 +msgid "Enter a new saved search name." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:89 +msgid "Add the new saved search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/saved_search_editor_ui.py:91 +msgid "Change the contents of the saved search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:119 msgid "Need username and password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:121 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:120 msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:172 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:171 msgid "Created by: " msgstr "أنشأه: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:178 msgid "Last downloaded: never" msgstr "آخر تنزيل: لم ينزّل من قبل" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:193 msgid "%d days, %d hours and %d minutes ago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:195 msgid "Last downloaded" msgstr "آخر تنزيل" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:217 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:216 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:192 msgid "Schedule news download" msgstr "جدولة تنزيل الأخبار" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:220 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:219 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:225 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:224 msgid "Download all scheduled new sources" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:322 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:321 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:323 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:322 msgid "Cannot download news as no internet connection is active" msgstr "" @@ -5349,11 +5789,79 @@ msgstr "" msgid "Choose formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:66 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:46 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:72 +msgid "Authors" +msgstr "المؤلفون" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:46 +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:101 +msgid "Publishers" +msgstr "الناشرون" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:110 +msgid " (not on any book)" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories.py:162 +msgid "" +"The current tag category will be permanently deleted. Are you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:153 +msgid "User Categories Editor" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:154 +msgid "A&vailable items" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:155 +msgid "Apply tags to current tag category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:157 +msgid "A&pplied items" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:158 +msgid "Unapply (remove) tag from current tag category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:160 +msgid "Category name: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:161 +msgid "Select a category to edit" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:162 +msgid "Delete this selected tag category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:164 +msgid "Enter a new category name. Select the kind before adding it." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:165 +msgid "Add the new category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:167 +msgid "Category filter: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_categories_ui.py:168 +msgid "Select the content kind of the new category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:93 msgid "Are your sure?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:69 msgid "" "The following tags are used by one or more books. Are you certain you want " "to delete them?" @@ -5403,6 +5911,66 @@ msgstr "" msgid "Add tag to available tags and apply it to current book" msgstr "إضافة وسم إلى قائمة الوسوم المتوفرة وعلّم الكتاب الحالي به" +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:60 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:429 +msgid "Item is blank" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:61 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:430 +msgid "An item cannot be set to nothing. Delete it instead." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:66 +msgid "Item already used" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:67 +msgid "The item %s is already used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:79 +msgid "No item selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:80 +msgid "You must select one item from the list of Available items." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:89 +msgid "No items selected" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:90 +msgid "You must select at least one items from the list." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor.py:94 +msgid "Are you certain you want to delete the following items?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:71 +msgid "Category Editor" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:72 +msgid "Items in use" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:73 +msgid "" +"Delete item from database. This will unapply the item from all books and " +"then remove it from the database." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:75 +msgid "Rename the item in every book where it is used." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_list_editor_ui.py:77 +msgid "Ctrl+S" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51 msgid "Test email settings" msgstr "" @@ -5681,98 +6249,176 @@ msgstr "ISBN:" msgid "Regular expression (?P)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:53 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 msgid "Job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:54 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 msgid "Status" msgstr "الحالة" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:55 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56 msgid "Progress" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:56 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:57 msgid "Running time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:68 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:69 msgid "There are %d running jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:72 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:79 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:94 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:73 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:80 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:95 msgid "Unknown job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:76 msgid "There are %d waiting jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:211 -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:214 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:215 msgid "Cannot kill job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:212 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:213 msgid "Cannot kill jobs that communicate with the device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:215 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:216 msgid "Job has already run" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:243 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:244 msgid "Unavailable" msgstr "غير متوفر" -#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:254 +#: /home/kovid/work/calibre/src/calibre/gui2/jobs.py:280 msgid " - Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1161 +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:284 +msgid "N" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/delegates.py:284 +msgid "Y" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:47 +msgid "On Device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:49 msgid "Size (MB)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:179 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:52 msgid "Rating" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:371 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:295 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1000 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1004 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:47 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:73 #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:440 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:414 msgid "None" msgstr "بدون" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:301 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1010 msgid "Book %s of %s." msgstr "كتاب %s لـ%s." -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:899 -msgid "Not allowed" +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:638 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1068 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:356 +msgid "The lookup/search name is \"{0}\"" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:900 -msgid "" -"Dropping onto a device is not supported. First add the book to the calibre " -"library." +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:827 +msgid "In Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1100 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:831 +msgid "Size" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:832 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:994 +#: /home/kovid/work/calibre/src/calibre/gui2/status.py:104 +msgid "Collections" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:990 msgid "Format" msgstr "التهيئة" -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1151 +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1050 +msgid "Marked for deletion" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/models.py:1053 msgid "Double click to edit me

" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:101 +msgid "Hide column %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:106 +msgid "Sort on %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:107 +msgid "Ascending" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:110 +msgid "Descending" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:122 +msgid "Change text alignment for %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:124 +msgid "Left" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:124 +msgid "Right" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:125 +msgid "Center" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:144 +msgid "Show column" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:156 +msgid "Restore default layout" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:479 +msgid "Not allowed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/library/views.py:480 +msgid "" +"Dropping onto a device is not supported. First add the book to the calibre " +"library." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/lrf_renderer/config_ui.py:47 msgid "Configure Viewer" msgstr "" @@ -5847,273 +6493,298 @@ msgstr "فتح الكتب الإلكترونية" msgid "Configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:28 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 msgid "Use the library located at the specified path." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:30 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:32 msgid "Start minimized to system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:32 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:34 msgid "Log debugging information to console" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:34 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:36 msgid "Do not check for updates" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:65 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:67 msgid "Choose a location for your calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:74 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:76 msgid "Failed to create library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:75 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:77 msgid "Failed to create calibre library at: %r. Aborting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:145 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:132 +msgid "Initializing user interface..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:157 msgid "Repairing failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:146 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:158 msgid "The database repair failed. Starting with a new empty library." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:150 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:594 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:162 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:595 msgid "Calibre Library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:175 msgid "Choose a location for your new calibre e-book library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:206 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:185 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:218 msgid "Bad database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:174 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:186 msgid "Bad database location %r. calibre will now quit." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:187 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:199 msgid "Corrupted database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:188 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:200 msgid "" "Your calibre database appears to be corrupted. Do you want calibre to try " "and repair it automatically? If you say No, a new empty calibre library will " "be created." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:206 msgid "" "Repairing database. This can take a very long time for a large collection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:207 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:219 msgid "" "Bad database location %r. Will start with a new, empty calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:230 +msgid "Starting %s: Loading books..." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:275 msgid "If you are sure it is not running" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:252 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:277 msgid "Cannot Start " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:253 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:278 msgid "%s is already running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:256 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:281 msgid "may be running in the system tray, in the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:258 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:283 msgid "upper right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:260 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:285 msgid "lower right region of the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:288 msgid "try rebooting your computer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:265 -#: /home/kovid/work/calibre/src/calibre/gui2/main.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:290 +#: /home/kovid/work/calibre/src/calibre/gui2/main.py:302 msgid "try deleting the file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:364 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:392 msgid "calibre" msgstr "كاليبر" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:394 +msgid "&Restrict to:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:395 +msgid "" +"Books display will be restricted to those matching the selected saved search" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:396 +msgid "set in ui.py" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:397 msgid "Advanced search" msgstr "بحث متقدّم" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:368 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:399 msgid "Alt+S" msgstr "Alt+S" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:400 msgid "&Search:" msgstr "&بحث:" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:370 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:371 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:401 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:402 msgid "" "

Search the list of books by title, author, publisher, tags, comments, " "etc.

Words separated by spaces are ANDed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:372 -msgid "set in ui.py" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:373 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:403 msgid "Reset Quick Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:375 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:405 msgid "Choose saved search or enter name for new saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:376 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:406 msgid "Copy current search text (instead of search name)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:378 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:408 msgid "Save current search under the name shown in the box" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:380 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:410 msgid "Delete current saved search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:382 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:412 msgid "Sort by &popularity" msgstr "ترتيب حسب الش&هرة" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:383 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:413 msgid "Match any" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:384 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:414 msgid "Match all" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:385 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:415 +msgid "Create, edit, and delete user categories" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:416 +msgid "Manage &user categories" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:417 msgid "Add books" msgstr "إضافة كتب" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:386 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:418 msgid "A" msgstr "A" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:387 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:388 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:419 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:420 msgid "Remove books" msgstr "حذف كتب" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:389 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:421 msgid "Del" msgstr "Del" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:390 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:422 msgid "Edit meta information" msgstr "تحرير معلومات الميتا" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:391 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:423 msgid "E" msgstr "E" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:392 -msgid "Merge books" +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:424 +msgid "Merge book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:393 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:425 msgid "M" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:394 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:426 msgid "Send to device" msgstr "إرسال لجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:395 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:347 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:427 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:355 msgid "Save to disk" msgstr "حفظ إلى القرص" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:396 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:428 msgid "S" msgstr "S" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:397 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:429 msgid "Fetch news" msgstr "احصل على الأخبار" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:398 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:430 msgid "F" msgstr "F" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:399 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:431 msgid "Convert E-books" msgstr "تحويل الكتاب الإلكتروني" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:400 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:432 msgid "C" msgstr "C" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:401 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:433 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:369 msgid "View" msgstr "عرض" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:402 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:434 msgid "V" msgstr "V" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:403 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:435 msgid "Open containing folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:404 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:436 msgid "Show book details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:405 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:437 msgid "Books by same author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:438 msgid "Books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:439 msgid "Books by this publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:408 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:440 msgid "Books with the same tags" msgstr "كتب بنفس الوسوم" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:442 msgid "Configure calibre" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:411 +#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:443 msgid "Ctrl+P" msgstr "" @@ -6143,11 +6814,15 @@ msgstr "" msgid "No matches found for this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:78 -#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:227 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:83 +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:238 msgid "Search" msgstr "بحث" +#: /home/kovid/work/calibre/src/calibre/gui2/search_box.py:292 +msgid "The selected search will be permanently deleted. Are you sure?" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/shortcuts.py:58 msgid "Press a key..." msgstr "" @@ -6208,44 +6883,84 @@ msgstr "" msgid "&Alternate shortcut:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:24 msgid "Jobs:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:163 +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:32 msgid "Click to see list of active jobs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:201 -msgid "Click to browse books by their covers" +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:83 +msgid "Hide Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:201 -msgid "Click to turn off Cover Browsing" +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:83 +msgid "Show Book Details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:206 -msgid "" -"

Browsing books by their covers is disabled.
Import of pictureflow " -"module failed:
" +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:84 +msgid "Hide Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:214 -msgid "Click to browse books by tags" +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:84 +msgid "Show Tag Browser" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 -msgid "Authors" -msgstr "المؤلفون" +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:85 +msgid "Hide Cover Browser" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 -msgid "Publishers" -msgstr "الناشرون" +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:85 +msgid "Show Cover Browser" +msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:95 +msgid "Side bar" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/sidebar.py:135 +msgid "Cover browser could not be loaded: " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:148 +msgid "Rename" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:153 +msgid "Hide category %s" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:156 +msgid "Show category" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:160 +msgid "Show all categories" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:167 +msgid "Manage " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:171 +msgid "Manage Saved Searches" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:178 +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:182 +msgid "Manage User Categories" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:348 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:244 msgid "Searches" msgstr "" +#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:439 +msgid "The name %s is already used." +msgstr "" + #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:63 #: /home/kovid/work/calibre/src/calibre/gui2/tools.py:182 msgid "Convert book %d of %d (%s)" @@ -6285,181 +7000,193 @@ msgid "" "reconvert them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:67 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:70 msgid "Save single format to disk..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:148 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:162 msgid "Search (For Advanced Search click the button to the left)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:154 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:168 msgid "Saved Searches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:177 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:191 msgid "Error communicating with device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:194 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:208 msgid "&Restore" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:196 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:210 msgid "&Donate to support calibre" msgstr "تبرع& لدعم كاليبر" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:199 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:213 msgid "&Eject connected device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:204 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:218 msgid "&Restart" msgstr "إعادة تشغيل&" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:244 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:258 msgid "

For help see the: User Manual
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:250 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:264 msgid "%s: %s by Kovid Goyal %%(version)s
%%(device)s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:273 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:281 msgid "Edit metadata individually" msgstr "تحرير الميتاداتا فردياً" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:275 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:283 msgid "Edit metadata in bulk" msgstr "تحرير الميتاداتا جملةً" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:277 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:285 msgid "Download metadata and covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:278 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:286 msgid "Download only metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:279 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:287 msgid "Download only covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:280 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:288 msgid "Download only social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:284 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:292 msgid "Merge into first selected book - delete others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:286 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:294 msgid "Merge into first selected book - keep others" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:293 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:301 msgid "Add books from a single directory" msgstr "إضافة كتب من دليل واحد" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:294 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:302 msgid "" "Add books from directories, including sub-directories (One book per " "directory, assumes every ebook file is the same book in a different format)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:297 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:305 msgid "" "Add books from directories, including sub directories (Multiple books per " "directory, assumes every ebook file is a different book)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:300 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:308 msgid "Add Empty book. (Book entry with no formats)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:348 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:356 msgid "Save to disk in a single directory" msgstr "حفظ إلى القرص في دليل واحد" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:349 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2172 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:357 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2290 msgid "Save only %s format to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:358 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:360 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2293 +msgid "Save only %s format to disk in a single directory" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:370 msgid "View specific format" msgstr "عرض تهيئة معينة" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:363 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:375 msgid "Remove selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:365 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:377 msgid "Remove files of a specific format from selected books.." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:367 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:379 msgid "Remove all formats from selected books, except..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:369 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:381 msgid "Remove covers from selected books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:406 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:420 msgid "Convert individually" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:407 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:421 msgid "Bulk convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:410 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:424 msgid "Create catalog of books in your calibre library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:426 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:440 msgid "Run welcome wizard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:462 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:480 msgid "Similar books..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:568 msgid "Calibre Quick Start Guide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:745 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:695 +msgid "Select folder to open as device" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:806 msgid "Browse by covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:802 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:806 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:874 +msgid "({0} of {1})" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:879 msgid "(all books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:811 -msgid "(%d found)" +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:881 +msgid "({0} of all)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:901 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:991 msgid "Device: " msgstr "الجهاز: " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:903 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:993 msgid " detected." msgstr " تم كشفه." -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:931 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1025 msgid "Connected " msgstr "متصل " -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:943 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1037 msgid "Device database corrupted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:944 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1038 msgid "" "\n" "

The database of books on the reader is corrupted. Try the " @@ -6475,204 +7202,210 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1003 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1180 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1101 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1278 msgid "Use library only" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1004 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1181 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1102 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1279 msgid "User annotations generated from main library only" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1011 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1492 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1549 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1587 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1608 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1734 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1799 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1917 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1109 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1595 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1652 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1690 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1711 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1841 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1906 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2024 msgid "No books selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1012 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1110 msgid "No books selected to fetch annotations from" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1037 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1135 msgid "Merging user annotations into database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1065 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1163 msgid "%s
Last Page Read: %d (%d%%)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1071 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1169 msgid "%s
Last Page Read: Location %d (%d%%)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1090 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1188 msgid "Location %d • %s
%s
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1099 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1197 msgid "Page %d • %s
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1104 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1202 msgid "Location %d • %s
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1224 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1322 msgid "How many empty books?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1225 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1323 msgid "How many empty books should be added?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1273 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1324 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1371 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1422 msgid "Uploading books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1285 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1383 msgid "EPUB Books" msgstr "كتب EPUB" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1286 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1384 msgid "LRF Books" msgstr "كتب LRF" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1287 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1385 msgid "HTML Books" msgstr "كتب HTML" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1288 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1386 msgid "LIT Books" msgstr "كتب LIT" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1289 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1387 msgid "MOBI Books" msgstr "كتب MOBI" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1290 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1388 msgid "Topaz books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1291 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1389 msgid "Text books" msgstr "كتب نصّية" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1292 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1390 msgid "PDF Books" msgstr "كتب PDF" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1293 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1391 msgid "Comics" msgstr "الرسومات" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1294 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1392 msgid "Archives" msgstr "أرشيفات" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1298 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1396 msgid "Supported books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1333 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1431 msgid "Merged some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1334 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1432 msgid "" "Some duplicates were found and merged into the following existing books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1343 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1441 msgid "Failed to read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1344 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1442 msgid "Failed to read metadata from the following" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1364 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1462 msgid "Cannot delete" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1367 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2061 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2077 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1465 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2193 msgid "No book selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1377 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1475 msgid "Choose formats to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1395 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1493 msgid "Choose formats not to be deleted" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1433 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1531 msgid "" "The selected books will be permanently deleted and the files removed " "from your computer. Are you sure?" msgstr "الكتب المختارة سوف تحذف تماماً من حاسوبك. هل أنت متأكّد؟" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1460 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1548 +msgid "" +"The selected books will be permanently deleted from your device. Are " +"you sure?" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1563 msgid "Deleting books from device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1491 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1594 msgid "Cannot download metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1507 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1610 msgid "social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1509 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1612 msgid "covers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1509 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1612 msgid "metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1511 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1614 msgid "Downloading %s for %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1533 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1636 msgid "Failed to download some metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1534 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1637 msgid "Failed to download metadata for the following:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1537 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1640 msgid "Failed to download metadata:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1548 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1586 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1651 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1689 msgid "Cannot edit metadata" msgstr "لا يمكن تحرير الميتاداتا" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1607 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1610 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1710 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1713 msgid "Cannot merge books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1611 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1714 msgid "At least two books must be selected for merging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1615 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1718 msgid "" "All book formats and metadata from the selected books will be added to the " "first selected book.

The second and subsequently selected " @@ -6680,7 +7413,7 @@ msgid "" "proceed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1626 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1729 msgid "" "All book formats and metadata from the selected books will be merged into " "the first selected book.

After merger the second and " @@ -6690,93 +7423,89 @@ msgid "" "from your computer.

Are you sure you want to proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1638 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1741 msgid "" "You are about to merge more than 5 books. Are you sure you want to " "proceed?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1733 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1840 msgid "Cannot save to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1736 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1843 msgid "Choose destination directory" msgstr "إختيار دليل الوجهة" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1769 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1876 msgid "Error while saving" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1770 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1877 msgid "There was an error while saving." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1777 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1778 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1884 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1885 msgid "Could not save some books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1779 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1886 msgid "Click the show details button to see which ones." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1800 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1907 msgid "No books selected to generate catalog for" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1817 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1924 msgid "Generating %s catalog..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1823 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1930 msgid "" "No books to catalog\n" "Check exclude tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1833 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1940 msgid "Catalog generated." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1836 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1943 msgid "Export Catalog Directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1837 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1944 msgid "Select destination for %s.%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1851 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1958 msgid "Fetching news from " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1865 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1972 msgid " fetched." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1916 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2023 msgid "Cannot convert" msgstr "لا يمكن تحويله" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1945 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2052 msgid "Starting conversion of %d book(s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2061 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2114 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2168 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2226 msgid "Cannot view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2076 -msgid "Cannot open folder" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2098 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2182 msgid "Multiple Books Selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2099 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2183 msgid "" "You are attempting to open %d books. Opening too many books at once can be " "slow and have a negative effect on the responsiveness of your computer. Once " @@ -6784,93 +7513,106 @@ msgid "" "continue?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2115 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2192 +msgid "Cannot open folder" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2227 msgid "%s has no available formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2156 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2268 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2273 msgid "Cannot configure" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2157 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2269 msgid "Cannot configure while there are running jobs." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2200 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2274 +msgid "Cannot configure before calibre is restarted." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2322 msgid "No detailed info available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2201 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2323 msgid "No detailed information is available for books on the device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2257 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2373 +msgid "Failed" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2379 msgid "Error talking to device" msgstr "خطأ في الاتصال بالجهاز" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2258 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2380 msgid "" "There was a temporary error talking to the device. Please unplug and " "reconnect the device and or reboot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2281 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2309 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2403 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2431 msgid "Conversion Error" msgstr "خطأ في التحويل" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2282 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2404 msgid "" "

Could not convert: %s

It is a DRMed book. You must " "first remove the DRM using third party tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2295 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2417 msgid "Recipe Disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2310 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2432 msgid "Failed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2358 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2479 msgid "" "is the result of the efforts of many volunteers from all over the world. If " "you find it useful, please consider donating to support its development." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2383 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2504 msgid "There are active jobs. Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2386 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2507 msgid "" " is communicating with the device!
\n" " Quitting may cause corruption on the device.
\n" " Are you sure you want to quit?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2390 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2511 msgid "WARNING: Active jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2442 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2563 msgid "" "will keep running in the system tray. To close it, choose Quit in the " "context menu of the system tray." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2461 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2582 msgid "" "Latest version: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2469 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2590 msgid "Update available" msgstr "تحديث متوفر" -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2470 +#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2591 msgid "" "%s has been updated to version %s. See the new features. Visit the download page?" @@ -7373,86 +8115,90 @@ msgid "" "available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:234 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:233 msgid "Click to see the books available on your computer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:235 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 msgid "Click to see the books in the main memory of your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:236 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 msgid "Click to see the books on storage card A in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:237 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:238 msgid "Click to see the books on storage card B in your reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:246 +msgid "Books located at" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:504 msgid "Change Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:505 msgid "Upper Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:506 msgid "Lower Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:533 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:507 msgid "Swap Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:534 +#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:508 msgid "Title Case" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:366 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:367 msgid "" "If you use the WordPlayer e-book app on your Android phone, you can access " "your calibre book collection directly on the device. To do this you have to " "turn on the content server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:370 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:371 msgid "" "Remember to leave calibre running as the server only runs as long as calibre " "is running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:372 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:373 msgid "" "You have to add the URL http://myhostname:8080 as your calibre library in " "WordPlayer. Here myhostname should be the fully qualified hostname or the IP " "address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:449 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:450 msgid "Moving library..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:465 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:467 msgid "Failed to move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:521 msgid "Invalid database" msgstr "قاعدة البيانات غير صالحة" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:522 msgid "" "

An invalid library already exists at %s, delete it before trying to move " "the existing library.
Error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:533 msgid "Could not move library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:661 +#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:662 msgid "welcome wizard" msgstr "" @@ -7487,13 +8233,6 @@ msgstr "" msgid "&Devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/kindle_ui.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/library_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:41 -msgid "WizardPage" -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/wizard/finish_ui.py:48 msgid "" "

Congratulations!

You have successfully setup calibre. Press the %s " @@ -7676,38 +8415,49 @@ msgstr "" msgid "Turn on the &content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/__init__.py:8 -msgid "Settings to control the calibre content server" +#: /home/kovid/work/calibre/src/calibre/library/caches.py:256 +msgid "today" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/__init__.py:12 -msgid "The port on which to listen. Default is %default" +#: /home/kovid/work/calibre/src/calibre/library/caches.py:259 +msgid "yesterday" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/__init__.py:14 -msgid "The server timeout in seconds. Default is %default" +#: /home/kovid/work/calibre/src/calibre/library/caches.py:262 +msgid "thismonth" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/__init__.py:16 -msgid "The max number of worker threads to use. Default is %default" +#: /home/kovid/work/calibre/src/calibre/library/caches.py:265 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:266 +msgid "daysago" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/__init__.py:18 -msgid "Set a password to restrict access. By default access is unrestricted." +#: /home/kovid/work/calibre/src/calibre/library/caches.py:416 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:426 +msgid "no" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/__init__.py:20 -msgid "Username for access. By default, it is: %default" +#: /home/kovid/work/calibre/src/calibre/library/caches.py:416 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:426 +msgid "unchecked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/__init__.py:24 -msgid "The maximum size for displayed covers. Default is %default." +#: /home/kovid/work/calibre/src/calibre/library/caches.py:419 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:429 +msgid "checked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/__init__.py:26 -msgid "" -"The maximum number of matches to return per OPDS query. This affects Stanza, " -"WordPlayer, etc. integration." +#: /home/kovid/work/calibre/src/calibre/library/caches.py:419 +#: /home/kovid/work/calibre/src/calibre/library/caches.py:429 +msgid "yes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/caches.py:423 +msgid "blank" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/caches.py:423 +msgid "empty" msgstr "" #: /home/kovid/work/calibre/src/calibre/library/catalog.py:41 @@ -7727,14 +8477,14 @@ msgid "" "Applies to: CSV, XML output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:262 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:202 msgid "" "Title of generated catalog used as title in metadata.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:269 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:209 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " @@ -7743,14 +8493,14 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:279 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:219 msgid "" "Regex describing tags to exclude as genres.\n" "Default: '%default' excludes bracketed tags, e.g. '[]'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:285 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:225 msgid "" "Comma-separated list of tag words indicating book should be excluded from " "output. Case-insensitive.\n" @@ -7759,28 +8509,28 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:293 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:233 msgid "" "Include 'Titles' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:300 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:240 msgid "" "Include 'Recently Added' section in catalog.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:307 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:247 msgid "" "Tag prefix for user notes, e.g. '*Jeff might enjoy reading this'.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:314 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:254 msgid "" "Sort titles with leading numbers as text, e.g.,\n" "'2001: A Space Odyssey' sorts as \n" @@ -7789,7 +8539,7 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:321 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:261 msgid "" "Specifies the output profile. In some cases, an output profile is required " "to optimize the catalog for the device. For example, 'kindle' or " @@ -7799,27 +8549,27 @@ msgid "" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:328 +#: /home/kovid/work/calibre/src/calibre/library/catalog.py:268 msgid "" "Tag indicating book has been read.\n" "Default: '%default'\n" "Applies to: ePub, MOBI output formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:122 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:41 msgid "" "Path to the calibre library. Default is to use the path stored in the " "settings." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:215 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:120 msgid "" "%prog list [options]\n" "\n" "List the books available in the calibre database.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:223 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:128 msgid "" "The fields to display when listing books in the database. Should be a comma " "separated list of fields.\n" @@ -7828,7 +8578,7 @@ msgid "" "fields. Only has effect in the text output format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:230 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:135 msgid "" "The field by which to sort the results.\n" "Available fields: %s\n" @@ -7838,54 +8588,48 @@ msgstr "" "الحقول المتوفرة: %s\n" "الإفتراضي: %%default" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:232 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:137 msgid "Sort results in ascending order" msgstr "ترتيب الترتيب بترتيب تصاعدي" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:234 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:139 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. Default is " "to do no filtering." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:236 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:141 msgid "" "The maximum width of a single line in the output. Defaults to detecting " "screen size." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:237 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:142 msgid "The string used to separate fields. Default is a space." msgstr "السلسلة التي تستخدم لتفريق الحقول. الإفتراضي يستخدم الفراغ." -#: /home/kovid/work/calibre/src/calibre/library/cli.py:238 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:143 msgid "" "The prefix for all file paths. Default is the absolute path to the library " "folder." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:241 -msgid "" -"The format in which to output the data. Available choices: %s. Defaults is " -"text." -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/library/cli.py:263 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:165 msgid "Invalid fields. Available fields:" msgstr "الحقول غير صالحة. الحقول المتوفرة:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:270 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:172 msgid "Invalid sort field. Available fields:" msgstr "حقل الترتيب غير صالح. الحقول المتوفرة:" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:342 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:244 msgid "" "The following books were not added as they already exist in the database " "(see --duplicates option):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:365 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:267 msgid "" "%prog add [options] file1 file2 file3 ...\n" "\n" @@ -7894,43 +8638,43 @@ msgid "" "the directory related options below.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:374 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:276 msgid "" "Assume that each directory has only a single logical book and that all files " "in it are different e-book formats of that book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:376 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:278 msgid "Process directories recursively" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:378 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:280 msgid "" "Add books to database even if they already exist. Comparison is done based " "on book titles." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:380 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:282 msgid "Add an empty book (a book with no formats)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:382 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:284 msgid "Set the title of the added empty book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:384 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:286 msgid "Set the authors of the added empty book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:386 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:288 msgid "Set the ISBN of the added empty book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:411 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:313 msgid "You must specify at least one file to add" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:427 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:329 msgid "" "%prog remove ids\n" "\n" @@ -7939,11 +8683,11 @@ msgid "" "command). For example, 23,34,57-85\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:442 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:344 msgid "You must specify at least one book to remove" msgstr "يجب أن تخصص على الأقل كتاباً واحداً للحذف" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:461 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:363 msgid "" "%prog add_format [options] id ebook_file\n" "\n" @@ -7952,15 +8696,15 @@ msgid "" "already exists, it is replaced.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:476 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:378 msgid "You must specify an id and an ebook file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:481 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:383 msgid "ebook file must have an extension" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:489 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:391 msgid "" "\n" "%prog remove_format [options] id fmt\n" @@ -7970,11 +8714,11 @@ msgid "" "EPUB. If the logical book does not have fmt available, do nothing.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:506 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:408 msgid "You must specify an id and a format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:524 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:426 msgid "" "\n" "%prog show_metadata [options] id\n" @@ -7984,15 +8728,15 @@ msgid "" "id is an id number from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:532 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:434 msgid "Print metadata in OPF form (XML)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:541 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:443 msgid "You must specify an id" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:554 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:456 msgid "" "\n" "%prog set_metadata [options] id /path/to/metadata.opf\n" @@ -8005,11 +8749,11 @@ msgid "" "show_metadata command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:570 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:472 msgid "You must specify an id and a metadata file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:590 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:492 msgid "" "%prog export [options] ids\n" "\n" @@ -8020,27 +8764,27 @@ msgid "" "an opf file). You can get id numbers from the list command.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:598 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:500 msgid "Export all books in database, ignoring the list of ids." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:600 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:502 msgid "Export books to the specified directory. Default is" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:602 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:504 msgid "Export all books into a single directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:609 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:511 msgid "Specifying this switch will turn this behavior off." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:632 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:534 msgid "You must specify some ids or the %s option" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:645 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:547 msgid "" "%prog add_custom_column [options] label name datatype\n" "\n" @@ -8051,23 +8795,23 @@ msgid "" "datatype is one of: {0}\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:654 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:556 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:658 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:560 msgid "" "A dictionary of options to customize how the data in this column will be " "interpreted." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:671 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:573 msgid "You must specify label, name and datatype" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:729 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:631 msgid "" "\n" " %prog catalog /path/to/destination.(csv|epub|mobi|xml ...) [options]\n" @@ -8078,30 +8822,30 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:743 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:645 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:747 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:649 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:753 -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:494 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:655 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:503 msgid "Show detailed output information. Useful for debugging" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:766 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:668 msgid "Error: You must specify a catalog output file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:786 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:688 msgid "" "\n" " %prog set_custom [options] column id value\n" @@ -8113,17 +8857,17 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:797 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:699 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:808 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:710 msgid "Error: You must specify a field name, id and value" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:827 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:729 msgid "" "\n" " %prog custom_columns [options]\n" @@ -8132,19 +8876,19 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:834 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:736 msgid "Show details for each column." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:846 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:748 msgid "You will lose all data in the column: %r. Are you sure (y/n)? " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:848 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:750 msgid "y" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:854 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:756 msgid "" "\n" " %prog remove_custom_column [options] label\n" @@ -8154,15 +8898,15 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:862 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:764 msgid "Do not ask for confirmation" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:872 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:774 msgid "Error: You must specify a column label" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/cli.py:885 +#: /home/kovid/work/calibre/src/calibre/library/cli.py:787 msgid "" "%%prog command [options] [arguments]\n" "\n" @@ -8174,30 +8918,46 @@ msgid "" "For help on an individual command: %%prog command --help\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1261 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:495 +msgid "Main" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:497 +msgid "Card A" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:499 +msgid "Card B" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1550 msgid "

Migrating old database to ebook library in %s

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1290 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1579 msgid "Copying %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1307 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1596 msgid "Compacting database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1400 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1689 msgid "Checking SQL integrity..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1438 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1728 msgid "Checking for missing files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1460 +#: /home/kovid/work/calibre/src/calibre/library/database2.py:1750 msgid "Checked id" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/field_metadata.py:111 +msgid "Ratings" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/library/save_to_disk.py:24 msgid "The title" msgstr "" @@ -8320,25 +9080,99 @@ msgstr "" msgid "Requested formats not available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server.py:379 +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:21 +msgid "Settings to control the calibre content server" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:25 +msgid "The port on which to listen. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:27 +msgid "The server timeout in seconds. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:29 +msgid "The max number of worker threads to use. Default is %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:31 +msgid "Set a password to restrict access. By default access is unrestricted." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:33 +msgid "Username for access. By default, it is: %default" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:37 +msgid "The maximum size for displayed covers. Default is %default." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/__init__.py:39 +msgid "" +"The maximum number of matches to return per OPDS query. This affects Stanza, " +"WordPlayer, etc. integration." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/base.py:93 msgid "Password to access your calibre library. Username is " msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server.py:886 +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:28 msgid "" "[options]\n" "\n" "Start the calibre content server." msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server.py:888 +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:30 msgid "Path to the library folder to serve with the content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/library/server.py:890 +#: /home/kovid/work/calibre/src/calibre/library/server/main.py:32 msgid "Write process PID to the specified file" msgstr "" +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:112 +msgid "%d books" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:124 +msgid "%d items" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:141 +msgid "RATING: %s
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:144 +msgid "TAGS: %s
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:148 +msgid "SERIES: %s [%s]
" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:189 +msgid "Library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:228 +msgid "Books in your library" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:234 +msgid "By " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:235 +msgid "Books sorted by " +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/library/server/opds.py:537 +msgid "Newest" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/utils/config.py:48 msgid "%sUsage%s: %s\n" msgstr "" @@ -8353,58 +9187,62 @@ msgid "" "arguments in quotation marks." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:650 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:670 msgid "Path to the database in which books are stored" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:652 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:672 msgid "Pattern to guess metadata from filenames" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:654 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:674 msgid "Access key for isbndb.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:656 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:676 msgid "Default timeout for network operations (seconds)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:658 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:678 msgid "Path to directory in which your library of books is stored" msgstr "المسار إلى الدليل الذي تحفظ فيها مكتبة كتبك" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:660 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:680 msgid "The language in which to display the user interface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:662 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:682 msgid "The default output format for ebook conversions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:666 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:686 msgid "Ordered list of formats to prefer for input." msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:668 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:688 msgid "Read metadata from files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:670 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:690 msgid "The priority of worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:672 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:692 msgid "Swap author first and last names when reading metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:674 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:694 msgid "Add new formats to existing book records" msgstr "" -#: /home/kovid/work/calibre/src/calibre/utils/config.py:678 +#: /home/kovid/work/calibre/src/calibre/utils/config.py:699 msgid "List of named saved searches" msgstr "" +#: /home/kovid/work/calibre/src/calibre/utils/config.py:700 +msgid "User-created tag browser categories" +msgstr "" + #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:43 msgid "Waiting..." msgstr "" @@ -8562,93 +9400,93 @@ msgstr "" msgid "Unknown News Source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:565 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:595 msgid "The \"%s\" recipe needs a username and password." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:654 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:692 msgid "Download finished" msgstr "تم التنزيل" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:656 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:694 msgid "Failed to download the following articles:" msgstr "فشل تنزيل المقالات التالية:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:662 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:700 msgid "Failed to download parts of the following articles:" msgstr "فشل تنزيل أجزاء من المقالات التالية:" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:664 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:702 msgid " from " msgstr " من " -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:666 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:704 msgid "\tFailed links:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:747 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:821 msgid "Could not fetch article. Run with -vv to see the reason" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:768 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:842 msgid "Fetching feeds..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:773 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:847 msgid "Got feeds from index page" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:779 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:853 msgid "Trying to download cover..." msgstr "محاولة تنزيل الغلاف..." -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:781 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:855 msgid "Generating masthead..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:861 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:936 msgid "Starting download [%d thread(s)]..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:877 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:952 msgid "Feeds downloaded to %s" msgstr "تم تنزيل التلقيم إلى %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:887 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:962 msgid "Could not download cover: %s" msgstr "لم يتمكّن من تنزيل الغلاف: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:899 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:974 msgid "Downloading cover from %s" msgstr "يتم تنزيل الغلاف من %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:934 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1009 msgid "Masthead image downloaded" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1158 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1205 msgid "Untitled Article" msgstr "مقالة بدون عنوان" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1230 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1276 msgid "Article downloaded: %s" msgstr "المقالة منزّلة: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1241 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1287 msgid "Article download failed: %s" msgstr "فشل تنزيل المقالة: %s" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1258 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1304 msgid "Fetching feed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1405 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1451 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:1421 +#: /home/kovid/work/calibre/src/calibre/web/feeds/news.py:1467 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." @@ -8669,55 +9507,55 @@ msgstr "تم جدولته" msgid "Custom" msgstr "مخصّص" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:471 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:480 msgid "" "%prog URL\n" "\n" "Where URL is for example http://google.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:474 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:483 msgid "Base directory into which URL is saved. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:477 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:486 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:480 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:489 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:483 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:492 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:485 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:494 msgid "" "Minimum interval in seconds between consecutive fetches. Default is %default " "s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:487 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:496 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:489 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:498 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:491 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:500 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 " @@ -8726,7 +9564,7 @@ msgid "" "applied first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:493 +#: /home/kovid/work/calibre/src/calibre/web/fetch/simple.py:502 msgid "Do not download CSS stylesheets." msgstr "" @@ -9306,3 +10144,9 @@ msgstr "" #~ msgid "This profile is intended for the SONY PRS line. The 500/505/700 etc." #~ msgstr "هذا الطور يستخدم مع أجهزة SONY PRS، من أنواع 500/505/700 إلخ." + +#~ msgid "Communicate with the Sony PRS-600/700/900 eBook reader." +#~ msgstr "التواصل مع قارئات الكتاب الاليكتروني سوني PRS-600/700/900 ." + +#~ msgid "Communicate with the Sony PRS-300/505/500 eBook reader." +#~ msgstr "التواصل مع قارئات الكتاب الاليكتروني سوني PRS-300/505/500 ." diff --git a/src/calibre/translations/bg.po b/src/calibre/translations/bg.po index 676604e992..7142a165c0 100644 --- a/src/calibre/translations/bg.po +++ b/src/calibre/translations/bg.po @@ -6,167 +6,167 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.4.51\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-21 22:47+0000\n" -"PO-Revision-Date: 2010-05-24 19:01+0000\n" -"Last-Translator: D Iordanov \n" +"POT-Creation-Date: 2010-05-29 18:54+0000\n" +"PO-Revision-Date: 2010-05-28 23:29+0000\n" +"Last-Translator: Kovid Goyal \n" "Language-Team: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-05-25 03:41+0000\n" +"X-Launchpad-Export-Date: 2010-05-30 03:41+0000\n" "X-Generator: Launchpad (build Unknown)\n" "Generated-By: pygettext.py 1.5\n" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:43 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:43 msgid "Does absolutely nothing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:46 -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:72 -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:54 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:70 -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:71 -#: /home/kovid/work/calibre/src/calibre/devices/prs500/books.py:267 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:58 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:199 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:204 -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:98 -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/input.py:101 -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/metadata.py:56 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:428 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:67 -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:69 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:329 -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:332 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1894 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1896 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:24 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:230 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:261 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:264 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:36 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/ereader.py:61 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fb2.py:46 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:36 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:62 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/meta.py:120 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:329 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf.py:444 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:912 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdb.py:39 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pdf.py:28 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:23 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/pml.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/txt.py:14 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:38 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:77 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:118 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:152 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:610 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:816 -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:818 -#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:909 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:914 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:980 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:137 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/reader.py:139 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:108 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:173 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/writer.py:174 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:39 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/palmdoc/writer.py:29 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ztxt/writer.py:27 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:83 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:73 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:74 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:63 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:52 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:65 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:66 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:63 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:62 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:63 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:81 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:82 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:87 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:88 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:233 -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:235 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:279 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:286 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:107 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:134 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:574 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:583 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:862 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:865 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:158 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:460 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:419 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:441 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:969 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1096 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1694 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1697 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:185 -#: /home/kovid/work/calibre/src/calibre/library/cli.py:311 -#: /home/kovid/work/calibre/src/calibre/library/database.py:913 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:248 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:260 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:680 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:717 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1111 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1113 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:1235 -#: /home/kovid/work/calibre/src/calibre/library/server.py:671 -#: /home/kovid/work/calibre/src/calibre/library/server.py:747 -#: /home/kovid/work/calibre/src/calibre/library/server.py:794 -#: /home/kovid/work/calibre/src/calibre/utils/localization.py:114 -#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45 -#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63 -#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:47 -#: /home/kovid/work/calibre/src/calibre/web/feeds/recipes/collection.py:50 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:46 +#: /home/kovid/work/trunk/src/calibre/devices/jetbook/driver.py:72 +#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:54 +#: /home/kovid/work/trunk/src/calibre/devices/nook/driver.py:70 +#: /home/kovid/work/trunk/src/calibre/devices/nook/driver.py:71 +#: /home/kovid/work/trunk/src/calibre/devices/prs500/books.py:267 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/books.py:58 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/books.py:199 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:204 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/input.py:98 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/input.py:101 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/metadata.py:56 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:428 +#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/input.py:67 +#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/input.py:69 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:329 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:332 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1894 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1896 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:24 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:230 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:261 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:264 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:364 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/ereader.py:36 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/ereader.py:61 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fb2.py:46 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:36 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:62 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:118 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/meta.py:120 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf.py:329 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf.py:444 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf2.py:921 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/pdb.py:39 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/pdf.py:28 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/pml.py:23 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/pml.py:49 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/txt.py:14 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:38 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:77 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:118 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:152 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:610 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:816 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:818 +#: /home/kovid/work/trunk/src/calibre/ebooks/odt/input.py:49 +#: /home/kovid/work/trunk/src/calibre/ebooks/odt/input.py:51 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:909 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:914 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:980 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/reader.py:137 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/reader.py:139 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/jacket.py:108 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/ereader/writer.py:173 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/ereader/writer.py:174 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/input.py:39 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/palmdoc/writer.py:29 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/ztxt/writer.py:27 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:82 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:83 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/decrypt.py:73 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/decrypt.py:74 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/encrypt.py:63 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/encrypt.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:52 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/merge.py:65 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/merge.py:66 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/reverse.py:63 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/reverse.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/rotate.py:62 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/rotate.py:63 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/split.py:81 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/split.py:82 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/writer.py:97 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/writer.py:98 +#: /home/kovid/work/trunk/src/calibre/ebooks/rtf/input.py:233 +#: /home/kovid/work/trunk/src/calibre/ebooks/rtf/input.py:235 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:279 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:286 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:170 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/__init__.py:21 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:134 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:574 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:583 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:862 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:865 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:158 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:460 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:173 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:419 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:441 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:969 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:1096 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:1694 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:1697 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:185 +#: /home/kovid/work/trunk/src/calibre/library/cli.py:311 +#: /home/kovid/work/trunk/src/calibre/library/database.py:913 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:248 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:260 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:680 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:717 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1111 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1113 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:1235 +#: /home/kovid/work/trunk/src/calibre/library/server.py:671 +#: /home/kovid/work/trunk/src/calibre/library/server.py:747 +#: /home/kovid/work/trunk/src/calibre/library/server.py:794 +#: /home/kovid/work/trunk/src/calibre/utils/localization.py:114 +#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:45 +#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:63 +#: /home/kovid/work/trunk/src/calibre/utils/podofo/__init__.py:77 +#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/collection.py:47 +#: /home/kovid/work/trunk/src/calibre/web/feeds/recipes/collection.py:50 msgid "Unknown" msgstr "Неизвестно" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:64 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:64 msgid "Base" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:172 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:172 msgid "File type" msgstr "Тип файл" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:206 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:206 msgid "Metadata reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:237 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:237 msgid "Metadata writer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:267 +#: /home/kovid/work/trunk/src/calibre/customize/__init__.py:267 msgid "Catalog generator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:15 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:15 msgid "" "Follow all local links in an HTML file and create a ZIP file containing all " "linked files. This plugin is run every time you add an HTML file to the " @@ -176,7 +176,7 @@ msgstr "" "свързани файлове. Този плъгин работи винаги когато HTML файл е добавен към " "библиотеката." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:50 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:50 msgid "" "Character encoding for the input HTML files. Common choices include: cp1252, " "latin1, iso-8859-1 and utf-8." @@ -184,7 +184,7 @@ msgstr "" "Формат на символите във входящия HTML файл. Обикновено формата е: cp1252, " "latin1, iso-8859-1 and utf-8." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:57 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:57 msgid "" "Create a PMLZ archive containing the PML file and all images in the " "directory pmlname_img or images. This plugin is run every time you add a PML " @@ -194,57 +194,57 @@ msgstr "" "'pmlname_img' или 'images'. Този плъгин работи винаги когато PML файл е " "добавен към библиотеката." -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:89 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:89 msgid "Extract cover from comic files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:116 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:127 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:139 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:149 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:159 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:170 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:180 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:190 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:200 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:210 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:220 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:231 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:242 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:254 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:275 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:286 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:296 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:306 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:116 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:127 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:139 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:149 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:159 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:170 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:180 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:190 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:200 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:210 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:220 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:231 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:242 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:254 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:275 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:286 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:296 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:306 msgid "Read metadata from %s files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:265 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:265 msgid "Read metadata from ebooks in RAR archives" msgstr "Прочети метадата от ebooks в RAR архиви" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:317 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:317 msgid "Read metadata from ebooks in ZIP archives" msgstr "Прочети метадата от ebooks в ZIP архиви" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:328 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:338 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:348 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:370 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:381 -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:391 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:328 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:338 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:348 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:370 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:381 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:391 msgid "Set metadata in %s files" msgstr "Запиши метадата в %s файлове" -#: /home/kovid/work/calibre/src/calibre/customize/builtins.py:359 +#: /home/kovid/work/trunk/src/calibre/customize/builtins.py:359 msgid "Set metadata from %s files" msgstr "Запиши метадата от %s файлове" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:102 +#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:102 msgid "Conversion Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:125 +#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:125 msgid "" "Specify the character encoding of the input document. If set this option " "will override any encoding declared by the document itself. Particularly " @@ -252,11 +252,11 @@ msgid "" "encoding declarations." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:241 +#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:241 msgid "Conversion Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/conversion.py:255 +#: /home/kovid/work/trunk/src/calibre/customize/conversion.py:255 msgid "" "If specified, the output plugin will try to create output that is as human " "readable as possible. May not have any effect for some output plugins." @@ -265,11 +265,11 @@ msgstr "" "максимално разбираем за четене. Може да не работи за някои \"output\" " "плъгини." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:45 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:45 msgid "Input profile" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:49 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:49 msgid "" "This profile tries to provide sane defaults and is useful if you know " "nothing about the input document." @@ -277,82 +277,82 @@ msgstr "" "Този профил се опитва да създаде разираеми резултати и е използваем ако не " "знаеш нищо за входящия документ." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:57 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:258 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:57 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:258 msgid "" "This profile is intended for the SONY PRS line. The 500/505/600/700 etc." msgstr "" "Този профил е предназначен за линията SONY PRS (500/505/600/700 и др.)" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:69 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:69 msgid "This profile is intended for the SONY PRS 300." msgstr "Този профил е предназначен за SONY PRS 300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:78 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:292 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:78 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:292 msgid "This profile is intended for the SONY PRS-900." msgstr "Този профил е предназначен за SONY PRS-900." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:86 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:322 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:86 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:322 msgid "This profile is intended for the Microsoft Reader." msgstr "Този профил е предназначен за Microsoft Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:97 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:333 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:97 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:333 msgid "This profile is intended for the Mobipocket books." msgstr "Този профил е предназначен за Mobipocket книги" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:110 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:346 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:110 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:346 msgid "This profile is intended for the Hanlin V3 and its clones." msgstr "Този профил е предназначен за Hanlin V3" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:122 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:358 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:122 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:358 msgid "This profile is intended for the Hanlin V5 and its clones." msgstr "Този профил е предназначен за Hanlin V5" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:132 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:366 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:132 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:366 msgid "This profile is intended for the Cybook G3." msgstr "Този профил е предназначен за Cybook G3." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:145 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:379 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:145 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:379 msgid "This profile is intended for the Cybook Opus." msgstr "Този профил е предназначен за Cybook Opus." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:157 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:390 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:157 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:390 msgid "This profile is intended for the Amazon Kindle." msgstr "Този профил е предназначен за Amazon Kindle." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:169 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:425 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:169 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:425 msgid "This profile is intended for the Irex Illiad." msgstr "Този профил е предназначен за Irex Illiad." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:181 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:438 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:181 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:438 msgid "This profile is intended for the IRex Digital Reader 1000." msgstr "Този профил е предназначен за IRex Digital Reader 1000." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:194 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:452 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:194 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:452 msgid "This profile is intended for the IRex Digital Reader 800." msgstr "Този профил е предназначен за IRex Digital Reader 800." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:206 -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:466 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:206 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:466 msgid "This profile is intended for the B&N Nook." msgstr "Този профил е предназначен за B&N Nook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:226 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:226 msgid "Output profile" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:230 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:230 msgid "" "This profile tries to provide sane defaults and is useful if you want to " "produce a document intended to be read at a computer or on a range of " @@ -362,24 +362,24 @@ msgstr "" "се опитваш да създадеш документ, който ще бъде използван от компютър или " "друго устройство." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:248 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:248 msgid "" "Intended for the iPad and similar devices with a resolution of 768x1024" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:271 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:271 msgid "This profile is intended for the Kobo Reader." msgstr "Този профил е предназначен за Kobo Reader." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:283 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:283 msgid "This profile is intended for the SONY PRS-300." msgstr "Този профил е предназначен за SONY PRS-300." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:301 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:301 msgid "This profile is intended for the 5-inch JetBook." msgstr "Този профил е предназначен за 5-inch JetBook." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:310 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:310 msgid "" "This profile is intended for the SONY PRS line. The 500/505/700 etc, in " "landscape mode. Mainly useful for comics." @@ -387,35 +387,35 @@ msgstr "" "Този профил е предназначен за SONY PRS линия продукти. Модел 500/505/700 и " "т.н., landscape формат. Основно използван за комикси." -#: /home/kovid/work/calibre/src/calibre/customize/profiles.py:408 +#: /home/kovid/work/trunk/src/calibre/customize/profiles.py:408 msgid "This profile is intended for the Amazon Kindle DX." msgstr "Този профил е предназначен за Amazon Kindle DX." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:31 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:31 msgid "Installed plugins" msgstr "Инсталирани приставки" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:32 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:32 msgid "Mapping for filetype plugins" msgstr "Съответствия за плъгини за вида файл" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:33 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:33 msgid "Local plugin customization" msgstr "Настройка на локалните плъгини." -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:34 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:34 msgid "Disabled plugins" msgstr "Изключени плъгини" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:77 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:77 msgid "No valid plugin found in " msgstr "Валидни плъгини не са открити в " -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:278 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:278 msgid "Initialization of plugin %s failed with traceback:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:433 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:433 msgid "" " %prog options\n" "\n" @@ -423,524 +423,528 @@ msgid "" " " msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:439 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:439 msgid "Add a plugin by specifying the path to the zip file containing it." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:441 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:441 msgid "Remove a custom plugin by name. Has no effect on builtin plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:443 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:443 msgid "" "Customize plugin. Specify name of plugin and customization string separated " "by a comma." msgstr "" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:445 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:445 msgid "List all installed plugins" msgstr "Списък на инсталираните приставки" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:447 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:447 msgid "Enable the named plugin" msgstr "Активирай избрания плъгин" -#: /home/kovid/work/calibre/src/calibre/customize/ui.py:449 +#: /home/kovid/work/trunk/src/calibre/customize/ui.py:449 msgid "Disable the named plugin" msgstr "Дективирай избрания плъгин" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:13 +#: /home/kovid/work/trunk/src/calibre/devices/android/driver.py:13 msgid "Communicate with Android phones." msgstr "Комуникирай с Android устройства" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:39 +#: /home/kovid/work/trunk/src/calibre/devices/android/driver.py:39 msgid "" "Comma separated list of directories to send e-books to on the device. The " "first one that exists will be used" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/android/driver.py:67 +#: /home/kovid/work/trunk/src/calibre/devices/android/driver.py:68 msgid "Communicate with S60 phones." msgstr "Комуникирай със S60 устройства" -#: /home/kovid/work/calibre/src/calibre/devices/binatone/driver.py:17 +#: /home/kovid/work/trunk/src/calibre/devices/binatone/driver.py:17 msgid "Communicate with the Binatone Readme eBook reader." msgstr "Комуникирай с Binatone Readme eBook устройство" -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:13 +#: /home/kovid/work/trunk/src/calibre/devices/blackberry/driver.py:13 msgid "Communicate with the Blackberry smart phone." msgstr "Комуникирай Blackberry устройство" -#: /home/kovid/work/calibre/src/calibre/devices/blackberry/driver.py:14 -#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:18 -#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:90 +#: /home/kovid/work/trunk/src/calibre/devices/blackberry/driver.py:14 +#: /home/kovid/work/trunk/src/calibre/devices/nuut2/driver.py:18 +#: /home/kovid/work/trunk/src/calibre/devices/prs500/driver.py:90 msgid "Kovid Goyal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/cybook/driver.py:22 +#: /home/kovid/work/trunk/src/calibre/devices/cybook/driver.py:22 msgid "Communicate with the Cybook Gen 3 / Opus eBook reader." msgstr "Комуникирай с Cybook Gen 3 / Opus eBook устройство" -#: /home/kovid/work/calibre/src/calibre/devices/eb600/driver.py:24 +#: /home/kovid/work/trunk/src/calibre/devices/eb600/driver.py:24 msgid "Communicate with the EB600 eBook reader." msgstr "Комуникирай с EB600 eBook устройство" -#: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:17 +#: /home/kovid/work/trunk/src/calibre/devices/edge/driver.py:17 msgid "Entourage Edge" msgstr "Entourage Edge" -#: /home/kovid/work/calibre/src/calibre/devices/edge/driver.py:18 +#: /home/kovid/work/trunk/src/calibre/devices/edge/driver.py:18 msgid "Communicate with the Entourage Edge." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/eslick/driver.py:16 +#: /home/kovid/work/trunk/src/calibre/devices/eslick/driver.py:16 msgid "Communicate with the ESlick eBook reader." msgstr "Комуникирай с ESlick eBook устройство" -#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:19 +#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:19 msgid "Communicate with Hanlin V3 eBook readers." msgstr "Комуникирай с Hanlin V3 eBook устройство" -#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:95 +#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:78 msgid "Communicate with Hanlin V5 eBook readers." msgstr "Комуникирай с Hanlin V5 eBook устройство" -#: /home/kovid/work/calibre/src/calibre/devices/hanlin/driver.py:114 +#: /home/kovid/work/trunk/src/calibre/devices/hanlin/driver.py:97 msgid "Communicate with the BOOX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:18 +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:18 msgid "Communicate with the Hanvon N520 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:41 +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:40 +msgid "Communicate with The Book reader." +msgstr "" + +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:51 msgid "Communicate with the SpringDesign Alex eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:57 +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:67 msgid "Communicate with the Azbooka" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/hanvon/driver.py:70 +#: /home/kovid/work/trunk/src/calibre/devices/hanvon/driver.py:80 msgid "Communicate with the Elonex EB 511 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:16 +#: /home/kovid/work/trunk/src/calibre/devices/iliad/driver.py:16 msgid "Communicate with the IRex Iliad eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/iliad/driver.py:17 -#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:18 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:29 +#: /home/kovid/work/trunk/src/calibre/devices/iliad/driver.py:17 +#: /home/kovid/work/trunk/src/calibre/devices/irexdr/driver.py:18 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:29 msgid "John Schember" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/interface.py:23 +#: /home/kovid/work/trunk/src/calibre/devices/interface.py:23 msgid "Device Interface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:16 +#: /home/kovid/work/trunk/src/calibre/devices/irexdr/driver.py:16 msgid "Communicate with the IRex Digital Reader 1000 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/irexdr/driver.py:42 +#: /home/kovid/work/trunk/src/calibre/devices/irexdr/driver.py:42 msgid "Communicate with the IRex Digital Reader 800" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/iriver/driver.py:15 +#: /home/kovid/work/trunk/src/calibre/devices/iriver/driver.py:15 msgid "Communicate with the Iriver Story reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/jetbook/driver.py:20 +#: /home/kovid/work/trunk/src/calibre/devices/jetbook/driver.py:20 msgid "Communicate with the JetBook eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:21 +#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:21 msgid "Communicate with the Kindle eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:152 +#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:152 msgid "Communicate with the Kindle 2 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/kindle/driver.py:162 +#: /home/kovid/work/trunk/src/calibre/devices/kindle/driver.py:162 msgid "Communicate with the Kindle DX eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:15 -msgid "Communicate with the Palm Pre" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:35 +#: /home/kovid/work/trunk/src/calibre/devices/kobo/driver.py:14 msgid "Communicate with the Kobo Reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/misc.py:56 +#: /home/kovid/work/trunk/src/calibre/devices/misc.py:15 +msgid "Communicate with the Palm Pre" +msgstr "" + +#: /home/kovid/work/trunk/src/calibre/devices/misc.py:35 msgid "Communicate with the Booq Avant" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:17 +#: /home/kovid/work/trunk/src/calibre/devices/nokia/driver.py:17 msgid "Communicate with the Nokia 770 internet tablet." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/nokia/driver.py:40 +#: /home/kovid/work/trunk/src/calibre/devices/nokia/driver.py:40 msgid "Communicate with the Nokia 810 internet tablet." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:20 +#: /home/kovid/work/trunk/src/calibre/devices/nook/driver.py:20 msgid "The Nook" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/nook/driver.py:21 +#: /home/kovid/work/trunk/src/calibre/devices/nook/driver.py:21 msgid "Communicate with the Nook eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/nuut2/driver.py:17 +#: /home/kovid/work/trunk/src/calibre/devices/nuut2/driver.py:17 msgid "Communicate with the Nuut2 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs500/driver.py:89 +#: /home/kovid/work/trunk/src/calibre/devices/prs500/driver.py:89 msgid "Communicate with the Sony PRS-500 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/books.py:150 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:104 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:107 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:110 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:121 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:44 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:47 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:50 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:70 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:80 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:89 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/books.py:150 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:104 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:107 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:110 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:121 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:44 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:47 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:50 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:70 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:80 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:89 msgid "Getting list of books on device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:26 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:26 msgid "Communicate with the Sony PRS-300/505/500 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:58 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:58 msgid "" "Comma separated list of metadata fields to turn into collections on the " "device. Possibilities include: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:149 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:151 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:115 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:117 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:149 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:151 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:115 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:117 msgid "Transferring books to device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:189 -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:196 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:144 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:161 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:189 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:196 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:144 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:161 msgid "Removing books from device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:224 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:176 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:224 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:176 msgid "Sending metadata to device..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/prs505/driver.py:230 +#: /home/kovid/work/trunk/src/calibre/devices/prs505/driver.py:230 msgid "Communicate with the Sony PRS-600/700/900 eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/sne/driver.py:17 +#: /home/kovid/work/trunk/src/calibre/devices/sne/driver.py:17 msgid "Communicate with the Samsung SNE eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:11 +#: /home/kovid/work/trunk/src/calibre/devices/teclast/driver.py:11 msgid "Communicate with the Teclast K3 reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:45 +#: /home/kovid/work/trunk/src/calibre/devices/teclast/driver.py:37 msgid "Communicate with the Newsmy reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/teclast/driver.py:60 +#: /home/kovid/work/trunk/src/calibre/devices/teclast/driver.py:49 msgid "Communicate with the iPapyrus reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:252 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:246 msgid "Unable to detect the %s disk drive. Try rebooting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:425 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:426 msgid "Unable to detect the %s mount point. Try rebooting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:490 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:491 msgid "Unable to detect the %s disk drive." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:583 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:584 msgid "Could not find mount helper: %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:595 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:596 msgid "" "Unable to detect the %s disk drive. Your kernel is probably exporting a " "deprecated version of SYSFS." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:603 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:604 msgid "Unable to mount main memory (Error code: %d)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:740 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:742 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:741 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:743 msgid "The reader has no storage card in this slot." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:744 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:745 msgid "Selected slot: %s is not supported." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:777 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:778 msgid "There is insufficient free space in main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:779 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:781 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:780 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:782 msgid "There is insufficient free space on the storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:811 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:817 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/device.py:842 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:240 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:589 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:995 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:812 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:818 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/device.py:843 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:240 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:151 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:589 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:995 msgid "News" msgstr "Новини" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:12 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:12 msgid "Configure Device" msgstr "Конфигуриране на устройство" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:28 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:28 msgid "settings for device drivers" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:30 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:30 msgid "Ordered list of formats the device will accept" msgstr "Подреден списък на форматите, които устройството приема" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:32 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:32 msgid "Place files in sub directories if the device supports them" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:34 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:78 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:34 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:78 msgid "Read metadata from files on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:36 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:36 msgid "Template to control how books are saved" msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/deviceconfig.py:39 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:80 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/deviceconfig.py:39 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:80 msgid "Extra customization" msgstr "Допълнително персонализиране" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:28 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:28 msgid "Communicate with an eBook reader." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:36 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:36 msgid "Get device information..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:132 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:140 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:132 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:140 msgid "Adding books to device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:165 -#: /home/kovid/work/calibre/src/calibre/devices/usbms/driver.py:170 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:165 +#: /home/kovid/work/trunk/src/calibre/devices/usbms/driver.py:170 msgid "Removing books from device metadata listing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:41 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:41 msgid "%prog [options] mybook.chm" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:42 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:42 msgid "Output directory. Defaults to current directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:45 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:589 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:45 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:589 msgid "Set the book title" msgstr "Задаване на заглавие на книга" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:47 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:591 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:47 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:591 msgid "Set sort key for the title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:49 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:593 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:49 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:593 msgid "Set the author" msgstr "Задаване на автор" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:51 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:595 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:51 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:595 msgid "Set sort key for the author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:53 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:597 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:53 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:597 msgid "The category this book belongs to. E.g.: History" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:56 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:600 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:56 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:600 msgid "Path to a graphic that will be set as this files' thumbnail" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:59 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:59 msgid "Path to a txt file containing a comment." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:62 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:607 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:62 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:607 msgid "Extract thumbnail from LRF file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:63 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:608 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:63 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:608 msgid "Set the publisher" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:64 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:609 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:609 msgid "Set the book classification" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:65 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:610 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:65 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:610 msgid "Set the book creator" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:66 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:611 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:66 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:611 msgid "Set the book producer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:68 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:613 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:68 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:613 msgid "" "Extract cover from LRF file. Note that the LRF format has no defined cover, " "so we use some heuristics to guess the cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:70 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:615 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:70 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:615 msgid "Set book ID" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/chm/reader.py:72 +#: /home/kovid/work/trunk/src/calibre/ebooks/chm/reader.py:72 msgid "Set font delta" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:201 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:201 msgid "Rendered %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:204 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:204 msgid "Failed %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:261 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:261 msgid "" "Failed to process comic: \n" "\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:279 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:279 msgid "" "Number of colors for grayscale image conversion. Default: %default. Values " "of less than 256 may result in blurred text on your device if you are " "creating your comics in EPUB format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:283 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:283 msgid "" "Disable normalize (improve contrast) color range for pictures. Default: False" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:286 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:286 msgid "Maintain picture aspect ratio. Default is to fill the screen." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:288 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:288 msgid "Disable sharpening." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:290 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:290 msgid "" "Disable trimming of comic pages. For some comics, trimming might remove " "content as well as borders." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:293 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:293 msgid "Don't split landscape images into two portrait images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:295 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:295 msgid "" "Keep aspect ratio and scale image using screen height as image width for " "viewing in landscape mode." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:298 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:298 msgid "" "Used for right-to-left publications like manga. Causes landscape pages to be " "split into portrait pages from right to left." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:302 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:302 msgid "" "Enable Despeckle. Reduces speckle noise. May greatly increase processing " "time." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:305 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:305 msgid "" "Don't sort the files found in the comic alphabetically by name. Instead use " "the order they were added to the comic." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:309 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:309 msgid "" "The format that images in the created ebook are converted to. You can " "experiment to see which format gives you optimal size and look on your " "device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:313 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:313 msgid "Apply no processing to the image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:315 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:315 msgid "Do not convert the image to grayscale (black and white)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:452 -#: /home/kovid/work/calibre/src/calibre/ebooks/comic/input.py:463 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:452 +#: /home/kovid/work/trunk/src/calibre/ebooks/comic/input.py:463 msgid "Page" msgstr "Страница" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:19 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:19 msgid "" "input_file output_file [options]\n" "\n" @@ -966,65 +970,65 @@ msgid "" "For full documentation of the conversion system see\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:97 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:97 msgid "INPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:98 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:98 msgid "Options to control the processing of the input %s file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:104 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:104 msgid "OUTPUT OPTIONS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:105 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:105 msgid "Options to control the processing of the output %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:119 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:119 msgid "Options to control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:135 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:135 msgid "Control auto-detection of document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:145 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:145 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:155 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:155 msgid "Options to set metadata in the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:158 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:158 msgid "Options to help with debugging the conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:183 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:183 msgid "List builtin recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/cli.py:256 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/cli.py:256 msgid "Output saved to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:95 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:95 msgid "Level of verbosity. Specify multiple times for greater verbosity." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:102 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:102 msgid "" "Save the output from different stages of the conversion pipeline to the " "specified directory. Useful if you are unsure at which stage of the " "conversion process a bug is occurring." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:111 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:111 msgid "" "Specify the input profile. The input profile gives the conversion system " "information on how to interpret various information in the input document. " @@ -1032,7 +1036,7 @@ msgid "" "are:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:122 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:122 msgid "" "Specify the output profile. The output profile tells the conversion system " "how to optimize the created document for the specified device. In some " @@ -1040,7 +1044,7 @@ msgid "" "a device. For example EPUB on the SONY reader. Choices are:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:133 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:133 msgid "" "The base font size in pts. All font sizes in the produced book will be " "rescaled based on this size. By choosing a larger size you can make the " @@ -1048,7 +1052,7 @@ msgid "" "chosen based on the output profile you chose." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:143 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:143 msgid "" "Mapping from CSS font names to font sizes in pts. An example setting is " "12,12,14,16,18,20,22,24. These are the mappings for the sizes xx-small to xx-" @@ -1057,17 +1061,17 @@ msgid "" "use a mapping based on the output profile you chose." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:155 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:155 msgid "Disable all rescaling of font sizes." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:162 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:162 msgid "" "The line height in pts. Controls spacing between consecutive lines of text. " "By default no line height manipulation is performed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:170 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:170 msgid "" "Some badly designed documents use tables to control the layout of text on " "the page. When converted these documents often have text that runs off the " @@ -1075,58 +1079,58 @@ msgid "" "tables and present it in a linear fashion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:180 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:180 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level one. If this is specified, it takes precedence over " "other forms of auto-detection." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:189 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:189 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level two. Each entry is added under the previous level one " "entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:197 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:197 msgid "" "XPath expression that specifies all tags that should be added to the Table " "of Contents at level three. Each entry is added under the previous level two " "entry." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:205 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:205 msgid "" "Normally, if the source file already has a Table of Contents, it is used in " "preference to the auto-generated one. With this option, the auto-generated " "one is always used." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:213 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:213 msgid "Don't add auto-detected chapters to the Table of Contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:220 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:220 msgid "" "If fewer than this number of chapters is detected, then links are added to " "the Table of Contents. Default: %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:227 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:227 msgid "" "Maximum number of links to insert into the TOC. Set to 0 to disable. Default " "is: %default. Links are only added to the TOC if less than the threshold " "number of chapters were detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:235 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:235 msgid "" "Remove entries from the Table of Contents whose titles match the specified " "regular expression. Matching entries and all their children are removed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:246 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:246 msgid "" "An XPath expression to detect chapter titles. The default is to consider " "

or

tags that contain the words \"chapter\",\"book\",\"section\" or " @@ -1136,7 +1140,7 @@ msgid "" "User Manual for further help on using this feature." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:260 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:260 msgid "" "Specify how to mark detected chapters. A value of \"pagebreak\" will insert " "page breaks before chapters. A value of \"rule\" will insert a line before " @@ -1144,39 +1148,39 @@ msgid "" "\"both\" will use both page breaks and lines to mark chapters." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:270 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:270 msgid "" "Either the path to a CSS stylesheet or raw CSS. This CSS will be appended to " "the style rules from the source file, so it can be used to override those " "rules." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:279 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:279 msgid "" "An XPath expression. Page breaks are inserted before the specified elements." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:285 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:285 msgid "" "Set the top margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:290 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:290 msgid "" "Set the bottom margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:295 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:295 msgid "" "Set the left margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:300 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:300 msgid "" "Set the right margin in pts. Default is %default. Note: 72 pts equals 1 inch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:306 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:306 msgid "" "Change text justification. A value of \"left\" converts all justified text " "in the source to left aligned (i.e. unjustified) text. A value of " @@ -1185,73 +1189,73 @@ msgid "" "Note that only some output formats support justification." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:316 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:316 msgid "" "Remove spacing between paragraphs. Also sets an indent on paragraphs of " "1.5em. Spacing removal will not work if the source file does not use " "paragraphs (

or

tags)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:323 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:323 msgid "" "When calibre removes inter paragraph spacing, it automatically sets a " "paragraph indent, to ensure that paragraphs can be easily distinguished. " "This option controls the width of that indent." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:330 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:330 msgid "" "Use the cover detected from the source file in preference to the specified " "cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:336 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:336 msgid "" "Insert a blank line between paragraphs. Will not work if the source file " "does not use paragraphs (

or

tags)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:343 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:343 msgid "" "Remove the first image from the input ebook. Useful if the first image in " "the source file is a cover and you are specifying an external cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:351 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:351 msgid "" "Insert the book metadata at the start of the book. This is useful if your " "ebook reader does not support displaying/searching metadata directly." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:359 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:359 msgid "" "Attempt to detect and correct hard line breaks and other problems in the " "source file. This may make things worse, so use with care." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:367 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:367 msgid "Use a regular expression to try and remove the header." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:374 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:374 msgid "The regular expression to use to remove the header." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:380 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:380 msgid "Use a regular expression to try and remove the footer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:387 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:387 msgid "The regular expression to use to remove the footer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:394 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:394 msgid "" "Read metadata from the specified OPF file. Metadata read from this file will " "override any metadata in the source file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:401 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:401 msgid "" "Transliterate unicode characters to an ASCII representation. Use with care " "because this will replace unicode characters with ASCII. For instance it " @@ -1261,7 +1265,7 @@ msgid "" "number of people will be used (Chinese in the previous example)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:416 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:416 msgid "" "Preserve ligatures present in the input document. A ligature is a special " "rendering of a pair of characters like ff, fi, fl et cetera. Most readers do " @@ -1271,111 +1275,111 @@ msgid "" "instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:428 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:38 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:428 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:38 msgid "Set the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:432 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:432 msgid "Set the authors. Multiple authors should be separated by ampersands." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:437 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:437 msgid "The version of the title to be used for sorting. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:441 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:441 msgid "String to be used when sorting by author. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:445 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:445 msgid "Set the cover to the specified file or URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:449 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:54 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:449 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:54 msgid "Set the ebook description." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:453 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:56 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:453 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:56 msgid "Set the ebook publisher." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:457 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:60 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:457 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:60 msgid "Set the series this ebook belongs to." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:461 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:62 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:461 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:62 msgid "Set the index of the book in this series." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:465 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:465 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:64 msgid "Set the rating. Should be a number between 1 and 5." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:469 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:66 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:469 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:66 msgid "Set the ISBN of the book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:473 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:68 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:473 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:68 msgid "Set the tags for the book. Should be a comma separated list." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:477 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:70 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:477 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:70 msgid "Set the book producer." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:481 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:72 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:481 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:72 msgid "Set the language." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:485 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:485 msgid "Set the publication date." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:489 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:489 msgid "Set the book timestamp (used by the date column in calibre)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:589 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:589 msgid "Could not find an ebook inside the archive" msgstr "В архива не може да бъде намерена електронна книга" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:647 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:647 msgid "Values of series index and rating must be numbers. Ignoring" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:654 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:654 msgid "Failed to parse date/time" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:802 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:802 msgid "Converting input to HTML..." msgstr "Конвертиране на входните данни в HTML ..." -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:829 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:829 msgid "Running transforms on ebook..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/conversion/plumber.py:916 +#: /home/kovid/work/trunk/src/calibre/ebooks/conversion/plumber.py:916 msgid "Creating" msgstr "Създаване" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:205 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:56 msgid "" "Extract the contents of the generated EPUB file to the specified directory. " "The contents of the directory are first deleted, so be careful." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:211 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:62 msgid "" "Turn off splitting at page breaks. Normally, input files are automatically " "split at every page break into two files. This gives an output ebook that " @@ -1384,21 +1388,21 @@ msgid "" "turn off splitting on page breaks." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:222 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:73 msgid "" "Split all HTML files larger than this size (in KB). This is necessary as " "most EPUB readers cannot handle large file sizes. The default of %defaultKB " "is the size required for Adobe Digital Editions." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:229 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:80 msgid "" "Normally, if the input file has no cover and you don't specify one, a " "default cover is generated with the title, authors, etc. This option " "disables the generation of this cover." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:235 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:86 msgid "" "Do not use SVG for the book cover. Use this option if your EPUB is going to " "be used ona device that does not support SVG, like the iPhone or the " @@ -1406,7 +1410,7 @@ msgid "" "blank page." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/epub/output.py:243 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:94 msgid "" "When using an SVG cover, this option will cause the cover to scale to cover " "the available screen area, but still preserve its aspect ratio (ratio of " @@ -1415,38 +1419,42 @@ msgid "" "option the image may be slightly distorted, but there will be no borders." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/fb2ml.py:144 -#: /home/kovid/work/calibre/src/calibre/ebooks/rb/rbml.py:102 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/txtml.py:77 +#: /home/kovid/work/trunk/src/calibre/ebooks/epub/output.py:169 +msgid "Start" +msgstr "" + +#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/fb2ml.py:144 +#: /home/kovid/work/trunk/src/calibre/ebooks/rb/rbml.py:102 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/txtml.py:77 msgid "Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/input.py:32 +#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/input.py:32 msgid "Do not insert a Table of Contents at the beginning of the book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/fb2/output.py:21 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:32 -#: /home/kovid/work/calibre/src/calibre/ebooks/pml/output.py:37 -#: /home/kovid/work/calibre/src/calibre/ebooks/rb/output.py:21 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:35 +#: /home/kovid/work/trunk/src/calibre/ebooks/fb2/output.py:21 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/output.py:32 +#: /home/kovid/work/trunk/src/calibre/ebooks/pml/output.py:37 +#: /home/kovid/work/trunk/src/calibre/ebooks/rb/output.py:21 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/output.py:35 msgid "Add Table of Contents to beginning of the book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:243 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:243 msgid "" "Traverse links in HTML files breadth first. Normally, they are traversed " "depth first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:250 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:250 msgid "" "Maximum levels of recursion when following links in HTML files. Must be non-" "negative. 0 implies that no links in the root HTML file are followed. " "Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:259 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:259 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 " @@ -1454,152 +1462,152 @@ msgid "" "pipeline." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/html/input.py:267 +#: /home/kovid/work/trunk/src/calibre/ebooks/html/input.py:267 msgid "" "Average line length for line breaking if the HTML is from a previous partial " "conversion of a PDF file. Default is %default which disables this." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lit/from_any.py:47 +#: /home/kovid/work/trunk/src/calibre/ebooks/lit/from_any.py:47 msgid "Creating LIT file from EPUB..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:320 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:320 msgid "\tBook Designer file detected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:322 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:322 msgid "\tParsing HTML..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:345 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:345 msgid "\tBaen file detected. Re-parsing..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:361 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:361 msgid "Written preprocessed HTML to " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:379 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:379 msgid "Processing %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:393 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:393 msgid "\tConverting to BBeB..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:539 -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:552 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:539 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:552 msgid "Could not parse file: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:544 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:544 msgid "%s is an empty file" msgstr "файл %s е празен" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:564 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:564 msgid "Failed to parse link %s %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:608 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:608 msgid "Cannot add link %s to TOC" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:957 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:957 msgid "Unable to process image %s. Error: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1002 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1002 msgid "Unable to process interlaced PNG %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1017 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1017 msgid "" "Could not process image: %s\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1772 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1772 msgid "" "An error occurred while processing a table: %s. Ignoring table markup." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1774 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1774 msgid "" "Bad table:\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1796 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1796 msgid "Table has cell that is too large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1862 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1862 msgid "Could not read cover image: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1865 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1865 msgid "Cannot read from: %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/html/convert_from.py:1994 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/html/convert_from.py:1994 msgid "Failed to process opf file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:136 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:136 msgid "" "%prog book.lrf\n" "Convert an LRF file into an LRS (XML UTF-8 encoded) file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:137 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:137 msgid "Output LRS file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:139 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:139 msgid "Do not save embedded image and font files to disk" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:158 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:158 msgid "Parsing LRF..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:161 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:161 msgid "Creating XML..." msgstr "Създаване на XML..." -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrfparser.py:163 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrfparser.py:163 msgid "LRS written to " msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:267 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:267 msgid "Could not read from thumbnail file:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:287 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:287 msgid "" "%prog [options] file.lrs\n" "Compile an LRS file into an LRF file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:288 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:288 msgid "Path to output file" msgstr "Път до изходния файл" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:290 -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:113 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:290 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:113 msgid "Verbose processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/lrs/convert_from.py:292 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/lrs/convert_from.py:292 msgid "Convert LRS to LRS, useful for debugging." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:457 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:457 msgid "Invalid LRF file. Could not set metadata." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:582 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:582 msgid "" "%prog [options] mybook.lrf\n" "\n" @@ -1608,159 +1616,159 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/meta.py:603 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/meta.py:603 msgid "" "Path to a txt file containing the comment to be stored in the lrf file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:90 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:90 msgid "Enable autorotation of images that are wider than the screen width." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:94 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:94 msgid "Set the space between words in pts. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:97 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:97 msgid "Add a header to all the pages with title and author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:100 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:100 msgid "" "Set the format of the header. %a is replaced by the author and %t by the " "title. Default is %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:104 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:104 msgid "Add extra spacing below the header. Default is %default pt." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:107 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:107 msgid "" "Minimum paragraph indent (the indent of the first line of a paragraph) in " "pts. Default: %default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:112 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:112 msgid "" "Render tables in the HTML as images (useful if the document has large or " "complex tables)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:117 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:117 msgid "" "Multiply the size of text in rendered tables by this factor. Default is " "%default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:121 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:121 msgid "The serif family of fonts to embed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:124 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:124 msgid "The sans-serif family of fonts to embed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:127 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:127 msgid "The monospace family of fonts to embed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/lrf/output.py:152 +#: /home/kovid/work/trunk/src/calibre/ebooks/lrf/output.py:152 msgid "Comic" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:363 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:98 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:61 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:174 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:416 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1159 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:363 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:97 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:98 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:174 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:416 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:1159 msgid "Title" msgstr "Заглавие" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:364 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:175 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:421 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1160 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:364 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:175 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:421 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:1160 msgid "Author(s)" msgstr "Автор(и)" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:180 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:365 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:64 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:180 msgid "Publisher" msgstr "Издател" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:366 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:49 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:366 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:49 msgid "Producer" msgstr "Производител" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:99 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:377 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:137 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:367 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:184 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:99 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:377 +#: /home/kovid/work/trunk/src/calibre/gui2/status.py:95 +#: /home/kovid/work/trunk/src/calibre/gui2/status.py:137 msgid "Comments" msgstr "Коментари" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:366 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1104 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1163 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:375 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:181 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:366 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:1104 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:1163 +#: /home/kovid/work/trunk/src/calibre/gui2/status.py:97 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:151 msgid "Tags" msgstr "Етикети" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:377 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:382 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:377 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:182 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:382 +#: /home/kovid/work/trunk/src/calibre/gui2/status.py:96 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:151 msgid "Series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:378 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:378 msgid "Language" msgstr "Език" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:380 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1103 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:380 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:1103 msgid "Timestamp" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:382 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:178 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:382 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:178 msgid "Published" msgstr "Публикуване" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/__init__.py:384 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/__init__.py:384 msgid "Rights" msgstr "Права" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/amazon.py:85 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/amazon.py:85 msgid "EDITORIAL REVIEW" msgstr "Редакционен преглед" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/archive.py:22 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/archive.py:22 msgid "" "Extract common e-book formats from archives (zip/rar) files. Also try to " "autodetect if they are actually cbz/cbr files." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:20 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:20 msgid "options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:21 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:21 msgid "" "\n" "Read/Write metadata from/to ebook files.\n" @@ -1774,120 +1782,120 @@ msgid "" "silently ignored.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:40 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:40 msgid "" "Set the authors. Multiple authors should be separated by the & character. " "Author names should be in the order Firstname Lastname." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:44 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:44 msgid "" "The version of the title to be used for sorting. If unspecified, and the " "title is specified, it will be auto-generated from the title." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:48 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:48 msgid "" "String to be used when sorting by author. If unspecified, and the author(s) " "are specified, it will be auto-generated from the author(s)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:52 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:52 msgid "Set the cover to the specified file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:58 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:58 msgid "Set the book category." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:74 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:74 msgid "Set the published date." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:77 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:77 msgid "Get the cover from the ebook and save it at as the specified file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:80 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:80 msgid "" "Specify the name of an OPF file. The metadata will be written to the OPF " "file." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:83 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:83 msgid "" "Read metadata from the specified OPF file and use it to set metadata in the " "ebook. Metadata specified on the command line will override metadata read " "from the OPF file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:88 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:88 msgid "Set the BookID in LRF files" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:153 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:153 msgid "No file specified" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:168 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:168 msgid "Original metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:185 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:185 msgid "Changed metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:197 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:197 msgid "OPF created in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:203 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:203 msgid "Cover saved to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/cli.py:205 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/cli.py:205 msgid "No cover found" msgstr "Не е намерена обложка" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:34 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:34 msgid "Metadata download" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:111 msgid "ratings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:111 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:111 msgid "tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:112 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:112 msgid "description/reviews" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:113 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:113 msgid "Download %s from %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:137 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:137 msgid "Downloads metadata from Google Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:153 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:153 msgid "Downloads metadata from isbndb.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:181 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:181 msgid "" "To use isbndb.com you must sign up for a %sfree account%s and enter your " "access key below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/fetch.py:189 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/fetch.py:189 msgid "Downloads social metadata from amazon.com" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:94 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:94 msgid "" "\n" "%prog [options] key\n" @@ -1901,41 +1909,41 @@ msgid "" "\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:105 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:105 msgid "The ISBN ID of the book you want metadata for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:107 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:107 msgid "The author whose book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:109 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:109 msgid "The title of the book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/isbndb.py:111 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/isbndb.py:111 msgid "The publisher of the book to search for." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:53 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:53 msgid "LibraryThing.com timed out. Try again later." msgstr "LibraryThing.com не отговаря в момента. Опитайте отново по-късно." -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:60 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:60 msgid "" "Could not fetch cover as server is experiencing high load. Please try again " "later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:61 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:61 msgid " not found." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:64 msgid "LibraryThing.com server error. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/library_thing.py:71 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/library_thing.py:71 msgid "" "\n" "%prog [options] ISBN\n" @@ -1943,166 +1951,166 @@ msgid "" "Fetch a cover image for the book identified by ISBN from LibraryThing.com\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/metadata/opf2.py:1103 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1372 +#: /home/kovid/work/trunk/src/calibre/ebooks/metadata/opf2.py:1112 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1372 msgid "Cover" msgstr "Обложка" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:22 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:22 msgid "Modify images to meet Palm device size limitations." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:26 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:26 msgid "When present, use author sort field as author." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:30 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:30 msgid "" "Don't add Table of Contents to end of book. Useful if the book has its own " "table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:33 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:56 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:33 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/htmltoc.py:56 msgid "Title for any generated in-line table of contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:37 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:37 msgid "Disable compression of the file contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:40 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:40 msgid "Tag marking book to be filed with Personal Docs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/output.py:108 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/output.py:108 msgid "All articles" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:258 +#: /home/kovid/work/trunk/src/calibre/ebooks/mobi/reader.py:258 msgid "This is an Amazon Topaz book. It cannot be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1373 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1373 msgid "Title Page" msgstr "Заглавна страница" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1374 -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:194 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1374 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/htmltoc.py:15 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:194 msgid "Table of Contents" msgstr "Съдържание" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1375 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1375 msgid "Index" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1376 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1376 msgid "Glossary" msgstr "Речник" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1377 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1377 msgid "Acknowledgements" msgstr "Благодарности" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1378 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1378 msgid "Bibliography" msgstr "Библиография" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1379 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1379 msgid "Colophon" msgstr "Послеслов" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1380 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1380 msgid "Copyright" msgstr "Авторски права" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1381 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1381 msgid "Dedication" msgstr "Посвещение" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1382 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1382 msgid "Epigraph" msgstr "Епиграф" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1383 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1383 msgid "Foreword" msgstr "Предисловие" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1384 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1384 msgid "List of Illustrations" msgstr "Списък на Илюстрации" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1385 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1385 msgid "List of Tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1386 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1386 msgid "Notes" msgstr "Бележки" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1387 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1387 msgid "Preface" msgstr "Предговор" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:1388 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/base.py:1388 msgid "Main Text" msgstr "Основен текст" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/iterator.py:39 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/iterator.py:41 msgid "%s format books are not supported" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/htmltoc.py:54 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/htmltoc.py:54 msgid "HTML TOC generation options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/jacket.py:113 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/jacket.py:113 msgid "Book Jacket" msgstr "Обложка на книга" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/split.py:34 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/split.py:34 msgid "" "Could not find reasonable point at which to split: %s Sub-tree size: %d KB" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/transforms/structure.py:68 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/transforms/structure.py:68 msgid "Unnamed" msgstr "Без име" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:32 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/writer.py:32 msgid "OPF/NCX/etc. generation options." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:35 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/writer.py:35 msgid "OPF version to generate. Default is %default." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/writer.py:37 +#: /home/kovid/work/trunk/src/calibre/ebooks/oeb/writer.py:37 msgid "" "Generate an Adobe \"page-map\" file if pagination information is available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:128 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/ereader/reader132.py:128 msgid "Footnotes" msgstr "Бележки под страница" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/ereader/reader132.py:135 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/ereader/reader132.py:135 msgid "Sidebar" msgstr "Страничен панел" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:22 -#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:23 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:22 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/input.py:22 +#: /home/kovid/work/trunk/src/calibre/ebooks/tcr/input.py:23 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:22 msgid "" "Normally calibre treats blank lines as paragraph markers. With this option " "it will assume that every line represents a paragraph instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/input.py:26 -#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/input.py:27 -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:26 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/input.py:26 +#: /home/kovid/work/trunk/src/calibre/ebooks/tcr/input.py:27 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:26 msgid "" "Normally calibre treats blank lines as paragraph markers. With this option " "it will assume that every line starting with an indent (either a tab or 2+ " @@ -2110,32 +2118,32 @@ msgid "" "starts with an indent is reached." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:23 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/output.py:23 msgid "Format to use inside the pdb container. Choices are:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdb/output.py:27 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdb/output.py:27 msgid "" "Specify the character encoding of the output document. The default is " "cp1252. Note: This option is not honored by all formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:24 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/input.py:24 msgid "Do not extract images from the document" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:26 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/input.py:26 msgid "" "Scale used to determine the length at which a line should be unwrapped. " "Valid values are a decimal between 0 and 1. The default is 0.5, this is the " "median line length." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/input.py:30 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/input.py:30 msgid "Use the new PDF conversion engine." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/cli.py:31 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/cli.py:31 msgid "" "command ...\n" "\n" @@ -2147,114 +2155,114 @@ msgid "" "Manipulate a PDF.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:29 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:29 msgid "" "[options] file.pdf\n" "\n" "Crop a PDF file.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:38 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:32 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:34 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:36 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:34 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:33 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:41 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:38 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/decrypt.py:32 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/encrypt.py:34 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/merge.py:36 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/reverse.py:34 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/rotate.py:33 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/split.py:41 msgid "" "Path to output file. By default a file is created in the current directory." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:41 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:41 msgid "Number of pixels to crop from the left most x (default is %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:44 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:44 msgid "Number of pixels to crop from the left most y (default is %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:47 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:47 msgid "Number of pixels to crop from the right most x (default is %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:50 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:50 msgid "Number of pixels to crop from the right most y (default is %s)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:53 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:53 msgid "" "A file generated by ghostscript which allows each page to be individually " "cropped `gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox file.pdf 2> bounding`" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:73 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:73 msgid "Crop Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/crop.py:73 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:56 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:54 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53 -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/crop.py:73 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/merge.py:56 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/reverse.py:54 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/rotate.py:53 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/split.py:61 msgid "Options to control the transformation of pdf" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:23 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/decrypt.py:23 msgid "" "[options] file.pdf password\n" "\n" "Decrypt a PDF.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/decrypt.py:60 msgid "Decrypt Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:25 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/encrypt.py:25 msgid "" "[options] file.pdf password\n" "\n" "Encrypt a PDF.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/encrypt.py:54 msgid "Encrypt Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:21 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:21 msgid "" "file.pdf ...\n" "\n" "Get info about a PDF.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:46 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:46 msgid "Author" msgstr "Автор" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:47 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:47 msgid "Subject" msgstr "Тема" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:48 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:48 msgid "Creator" msgstr "Създател" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:50 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:50 msgid "Pages" msgstr "Страници" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:51 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:51 msgid "File Size" msgstr "Размер на файл" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/info.py:52 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/info.py:52 msgid "PDF Version" msgstr "PDF Версия" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:25 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/merge.py:25 msgid "" "[options] file1.pdf file2.pdf ...\n" "\n" @@ -2263,33 +2271,33 @@ msgid "" "Merges individual PDFs.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/merge.py:56 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/merge.py:56 msgid "Merge Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:25 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/reverse.py:25 msgid "" "[options] file.pdf\n" "\n" "Reverse a PDF.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/reverse.py:54 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/reverse.py:54 msgid "Reverse Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:24 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/rotate.py:24 msgid "" "file.pdf degrees\n" "\n" "Rotate pages of a PDF clockwise.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/rotate.py:53 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/rotate.py:53 msgid "Rotate Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:25 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/split.py:25 msgid "" "\n" "%prog %%name [options] file.pdf page_to_split_on ...\n" @@ -2304,84 +2312,90 @@ msgid "" "Split a PDF.\n" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/manipulate/split.py:61 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/manipulate/split.py:61 msgid "Split Options:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:59 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/output.py:31 msgid "" "The unit of measure. Default is inch. Choices are %s Note: This does not " "override the unit for margins!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:64 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/output.py:36 msgid "" "The size of the paper. This size will be overridden when an output profile " "is used. Default is letter. Choices are %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:68 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/output.py:40 msgid "" "Custom size of the document. Use the form widthxheight EG. `123x321` to " "specify the width and height. This overrides any specified paper-size." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/output.py:73 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/output.py:45 msgid "The orientation of the page. Default is portrait. Choices are %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pdf/pdftohtml.py:55 +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/output.py:49 +msgid "" +"Preserve the aspect ratio of the cover, instead of stretching it to fill the " +"ull first page of the generated pdf." +msgstr "" + +#: /home/kovid/work/trunk/src/calibre/ebooks/pdf/pdftohtml.py:55 msgid "Could not find pdftohtml, check it is in your PATH" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/pml/output.py:33 +#: /home/kovid/work/trunk/src/calibre/ebooks/pml/output.py:33 msgid "" "Specify the character encoding of the output document. The default is cp1252." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:199 +#: /home/kovid/work/trunk/src/calibre/ebooks/rtf/input.py:199 msgid "" "This RTF file has a feature calibre does not support. Convert it to HTML " "first and then try it.\n" "%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:23 +#: /home/kovid/work/trunk/src/calibre/ebooks/tcr/output.py:23 msgid "" "Specify the character encoding of the output document. The default is utf-8." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/tcr/output.py:27 +#: /home/kovid/work/trunk/src/calibre/ebooks/tcr/output.py:27 msgid "" "Specify the compression level to use. Scale 1 - 10. 1 being the lowest " "compression but the fastest and 10 being the highest compression but the " "slowest." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:32 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:32 msgid "" "Run the text input through the markdown pre-processor. To learn more about " "markdown see" msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/input.py:35 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/input.py:35 msgid "Do not insert a Table of Contents into the output text." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:24 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/output.py:24 msgid "" "Type of newline to use. Options are %s. Default is 'system'. Use 'old_mac' " "for compatibility with Mac OS 9 and earlier. For Mac OS X use 'unix'. " "'system' will default to the newline type used by this OS." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:30 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/output.py:30 msgid "" "Specify the character encoding of the output document. The default is utf-8. " "Note: This option is not honored by all formats." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:38 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/output.py:38 msgid "" "The maximum number of characters per line. This splits on the first space " "before the specified value. If no space is found the line will be broken at " @@ -2389,296 +2403,296 @@ msgid "" "minimum of 25 characters. Use 0 to disable line splitting." msgstr "" -#: /home/kovid/work/calibre/src/calibre/ebooks/txt/output.py:45 +#: /home/kovid/work/trunk/src/calibre/ebooks/txt/output.py:45 msgid "" "Force splitting on the max-line-length value when no space is present. Also " "allows max-line-length to be below the minimum" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:31 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:31 msgid "Send file to storage card instead of main memory by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:33 msgid "Confirm before deleting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:35 msgid "Toolbar icon size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:37 msgid "Show button labels in the toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:39 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:39 msgid "Main window geometry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:41 msgid "Notify when a new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:43 msgid "Use Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:45 msgid "Sort tags list by popularity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:47 msgid "Number of covers to show in the cover browsing mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:49 msgid "Defaults for conversion to LRF" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:51 msgid "Options for the LRF ebook viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:54 msgid "Formats that are viewed using the internal viewer" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:56 msgid "Columns to be displayed in the book list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:57 msgid "Automatically launch content server on application startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:58 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:58 msgid "Oldest news kept in database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:59 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:59 msgid "Show system tray icon" msgstr "Показване на икона в системния панел" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:61 msgid "Upload downloaded news to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:63 msgid "Delete books from library after uploading to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:65 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:65 msgid "" "Show the cover flow in a separate window instead of in the main calibre " "window" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:67 msgid "Disable notifications from the system tray icon" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:69 msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:91 msgid "Maximum number of waiting worker processes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:93 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:93 msgid "Download social metadata (tags/rating/etc.)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:95 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:95 msgid "Overwrite author and title with new metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:97 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:97 msgid "Limit max simultaneous jobs to number of CPUs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:475 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:482 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:169 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:169 msgid "Copy" msgstr "Копиране" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:169 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:169 msgid "Copy to Clipboard" msgstr "Копиране в системния буфер" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:407 +#: /home/kovid/work/trunk/src/calibre/gui2/__init__.py:407 msgid "Choose Files" msgstr "Избор на Файлове" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:54 msgid "Searching in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:225 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:225 msgid "Adding..." msgstr "Добавяне ..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:238 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:238 msgid "Searching in all sub-directories..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:251 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:251 msgid "Path error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:252 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:252 msgid "The specified directory could not be processed." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:256 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:517 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:256 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:517 msgid "No books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:257 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1822 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:257 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:1822 msgid "No books found" msgstr "Не са намерени книги" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:323 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:323 msgid "Added" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:336 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:336 msgid "Adding failed" msgstr "Добавянето е неуспешно" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:337 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:337 msgid "" "The add books process seems to have hung. Try restarting calibre and adding " "the books in smaller increments, until you find the problem book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:349 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:349 msgid "Duplicates found!" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:350 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:350 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/add.py:353 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:353 msgid "Adding duplicates..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:419 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:419 msgid "Saving..." msgstr "Запис..." -#: /home/kovid/work/calibre/src/calibre/gui2/add.py:472 +#: /home/kovid/work/trunk/src/calibre/gui2/add.py:472 msgid "Saved" msgstr "Запазен" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_csv_xml.py:16 msgid "CSV/XML Options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:21 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_input.py:13 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_output.py:15 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output.py:20 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output.py:21 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_input.py:13 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input.py:13 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output.py:18 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/rb_output.py:15 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input.py:13 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_output.py:17 msgid "Options specific to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:20 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:21 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:17 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:18 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:15 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_csv_xml.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi.py:18 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_output.py:15 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output.py:20 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output.py:21 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_output.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output.py:18 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/rb_output.py:15 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_output.py:17 msgid "output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:88 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:48 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:166 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:31 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:35 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:39 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:28 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:42 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:45 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:67 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:74 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:35 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_tab_template_ui.py:27 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:88 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_input_ui.py:28 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_output_ui.py:28 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:166 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_input_ui.py:31 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_output_ui.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input_ui.py:38 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/rb_output_ui.py:28 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:59 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_output_ui.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xexp_edit_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template_ui.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_item_ui.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:106 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:107 msgid "Form" msgstr "Форма" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:38 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_csv_xml_ui.py:38 msgid "Fields to include in output:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi.py:17 msgid "E-book options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 -#: /home/kovid/work/calibre/src/calibre/library/catalog.py:282 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:958 -#: /home/kovid/work/calibre/src/calibre/library/database2.py:976 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi.py:20 +#: /home/kovid/work/trunk/src/calibre/library/catalog.py:282 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:958 +#: /home/kovid/work/trunk/src/calibre/library/database2.py:976 msgid "Catalog" msgstr "Каталог" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:69 msgid "'Don't include this book' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:70 msgid "'Mark this book as read' tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:71 msgid "Additional note tag prefix:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:72 msgid "Regex pattern describing tags to exclude as genres:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:73 msgid "" "Regex tips:\n" "- The default regex - \\[[\\w ]*\\] - excludes genre tags of the form [tag], " @@ -2687,135 +2701,135 @@ msgid "" "Genre Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:76 msgid "Include 'Titles' Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:77 msgid "Include 'Recently Added' Section" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_epub_mobi_ui.py:78 msgid "Sort numbers as text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 +#: /home/kovid/work/trunk/src/calibre/gui2/catalog/catalog_tab_template_ui.py:28 msgid "Tab template for catalog.ui" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:36 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/bulk.py:36 msgid "" "For settings that cannot be specified in this dialog, use the values saved " "in a previous conversion (if they exist) instead of using the defaults " "specified in the Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/bulk.py:67 msgid "Bulk Convert" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/bulk.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:185 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/bulk.py:80 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single.py:185 msgid "Options specific to the output format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:15 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input.py:15 msgid "Comic Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input.py:16 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:13 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:13 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_input.py:13 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_input.py:13 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input.py:13 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input.py:13 msgid "input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:89 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:94 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:89 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:94 msgid "&Number of Colors:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:90 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:96 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:90 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:96 msgid "Disable &normalize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:97 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:97 msgid "Keep &aspect ratio" msgstr "Запазване &съотношението" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:92 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:98 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:92 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:98 msgid "Disable &Sharpening" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:93 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:104 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:93 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:104 msgid "Disable &Trimming" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:103 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:94 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:103 msgid "&Wide" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:95 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:99 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:95 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:99 msgid "&Landscape" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:96 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:101 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:96 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:101 msgid "&Right to left" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:97 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:100 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:97 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:100 msgid "Don't so&rt" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:98 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:102 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:98 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:102 msgid "De&speckle" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:99 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:99 msgid "&Disable comic processing" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:100 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:111 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:100 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:111 msgid "&Output format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/comic_input_ui.py:101 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/comic_input_ui.py:101 msgid "Disable conversion of images to &black and white" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:19 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:19 msgid "Debug" msgstr "Дебъгване" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:21 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:21 msgid "Debug the conversion process." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:38 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:38 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:51 msgid "Choose debug folder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:57 msgid "Invalid debug directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug.py:58 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug.py:58 msgid "Failed to create debug directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:50 msgid "" "Choose a folder to put the debug output into. If you specify a folder, " "calibre will place a lot of debug output into it. This will be useful in " @@ -2823,105 +2837,105 @@ msgid "" "conversion parameters like Table of Contents and Chapter Detection." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:171 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:52 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:76 -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:77 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:574 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:359 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:364 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:378 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:389 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:391 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:393 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:398 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:400 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:126 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:128 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:135 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:267 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:269 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:270 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:365 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:374 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:377 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:379 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:381 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/shortcuts_ui.py:80 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:186 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:171 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xexp_edit_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:77 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:507 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:574 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:359 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:364 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:378 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:389 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:391 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:393 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:398 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:400 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:128 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:267 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:269 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:270 +#: /home/kovid/work/trunk/src/calibre/gui2/main_ui.py:365 +#: /home/kovid/work/trunk/src/calibre/gui2/main_ui.py:367 +#: /home/kovid/work/trunk/src/calibre/gui2/main_ui.py:374 +#: /home/kovid/work/trunk/src/calibre/gui2/main_ui.py:377 +#: /home/kovid/work/trunk/src/calibre/gui2/main_ui.py:379 +#: /home/kovid/work/trunk/src/calibre/gui2/main_ui.py:381 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/shortcuts_ui.py:80 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:186 msgid "..." msgstr "..." -#: /home/kovid/work/calibre/src/calibre/gui2/convert/debug_ui.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/debug_ui.py:54 msgid "" "The debug process outputs the intermediate HTML generated at various stages " "of the conversion process. This HTML can sometimes serve as a good starting " "point for hand editing a conversion." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output.py:15 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output.py:15 msgid "EPUB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:49 msgid "Do not &split on page breaks" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:50 msgid "No default &cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:51 msgid "No &SVG cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:52 msgid "Preserve cover &aspect ratio" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:53 msgid "Split files &larger than:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/epub_output_ui.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/epub_output_ui.py:54 msgid " KB" msgstr " кБ" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input.py:12 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_input.py:12 msgid "FB2 Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_input_ui.py:29 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_input_ui.py:29 msgid "Do not insert a &Table of Contents at the beginning of the book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output.py:14 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_output.py:14 msgid "FB2 Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/fb2_output_ui.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:37 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output_ui.py:29 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/fb2_output_ui.py:29 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_output_ui.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/rb_output_ui.py:29 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_output_ui.py:47 msgid "&Inline TOC" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:99 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:99 msgid "Font rescaling wizard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:100 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:100 msgid "" "

This wizard will help you choose an appropriate font size key for your " "needs. Just enter the base font size of the input document and then enter an " @@ -2937,728 +2951,732 @@ msgid "" "for a discussion of how font size rescaling works.

" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:103 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:103 msgid "&Output document" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:104 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:109 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:104 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:109 msgid "&Base font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:105 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:105 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:123 msgid "Font size &key:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:106 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:110 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:112 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:127 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:118 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:120 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:121 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:123 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:125 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:106 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:110 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:112 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:118 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:121 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:127 msgid " pt" msgstr " точки" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:107 msgid "Use &default values" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:108 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:108 msgid "&Input document" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:111 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:111 msgid "&Font size: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:113 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:113 msgid " will map to size: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/font_key_ui.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/font_key_ui.py:114 msgid "0.0 pt" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:16 msgid "Look & Feel" msgstr "Външен вид" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:18 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:18 msgid "Control the look and feel of the output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:30 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:30 msgid "Original" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:31 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:31 msgid "Left align" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel.py:32 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel.py:32 msgid "Justify text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:120 msgid "&Disable font size rescaling" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:121 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:121 msgid "Base &font size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:124 msgid "Wizard to help you choose an appropriate font size key" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:126 msgid "Line &height:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:128 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:128 msgid "Input character &encoding:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:129 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:129 msgid "Remove &spacing between paragraphs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:130 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:130 msgid "Indent size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:131 msgid "" "

When calibre removes inter paragraph spacing, it automatically sets a " "paragraph indent, to ensure that paragraphs can be easily distinguished. " "This option controls the width of that indent." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:132 msgid " em" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:133 msgid "Text justification:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:134 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:134 msgid "&Linearize tables" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:135 msgid "Extra &CSS" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:136 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:136 msgid "&Transliterate unicode characters to ASCII" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:137 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:137 msgid "Insert &blank line" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/look_and_feel_ui.py:138 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/look_and_feel_ui.py:138 msgid "Keep &ligatures" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output.py:19 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output.py:19 msgid "LRF Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:116 msgid "Enable &autorotation of wide images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:117 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:117 msgid "&Wordspace:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:119 msgid "Minimum para. &indent:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:121 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:121 msgid "Render &tables as images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:122 msgid "Text size multiplier for text in rendered tables:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:123 msgid "Add &header" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:124 msgid "Header &separation:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:126 msgid "Header &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:127 msgid "&Embed fonts" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:128 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:128 msgid "&Serif font family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:129 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:129 msgid "S&ans-serif font family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/lrf_output_ui.py:130 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/lrf_output_ui.py:130 msgid "&Monospaced font family:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main.py:114 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:195 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:195 msgid "Metadata" msgstr "Метаданни" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:43 msgid "" "Set the metadata. The output file will contain as much of this metadata as " "possible." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:99 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:161 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:99 msgid "Choose cover for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:168 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:106 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:168 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:106 msgid "Cannot read" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:169 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:107 msgid "You do not have permission to read the file: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:184 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:184 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:115 msgid "Error reading file" msgstr "Грешка при четене на файл" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:178 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:116 msgid "

There was an error reading from file:
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata.py:185 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata.py:185 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:124 msgid " is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:167 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:395 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:167 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:395 msgid "Book Cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:168 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:168 msgid "Use cover from &source file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:169 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:396 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:169 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:396 msgid "Change &cover image:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:170 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:397 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:170 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:397 msgid "Browse for an image to use as the cover of this book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:172 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:356 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:172 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:356 msgid "&Title: " msgstr "&Заглавие: " -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:173 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:357 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:173 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:357 msgid "Change the title of this book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:174 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:360 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:174 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:360 msgid "&Author(s): " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:175 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:175 msgid "Author So&rt:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:176 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:176 msgid "" "Change the author(s) of this book. Multiple authors should be separated by a " "comma" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:369 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:369 msgid "&Publisher: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:178 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:370 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:178 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:370 msgid "Ta&gs: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:179 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:154 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:371 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:371 msgid "" "Tags categorize the book. This is particularly useful while searching. " "

They can be any words or phrases, separated by commas." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:180 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:374 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:180 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:161 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:374 msgid "&Series:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:181 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:182 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:375 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:376 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:181 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:182 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:163 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:375 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:376 msgid "List of known series. You can add new series." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/metadata_ui.py:183 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:381 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/metadata_ui.py:183 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:381 msgid "Book " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:20 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output.py:20 msgid "MOBI Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output.py:42 msgid "Default" msgstr "По подразбиране" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:67 msgid "&Title for Table of Contents:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:68 msgid "Rescale images for &Palm devices" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:69 msgid "Use author &sort for author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:70 msgid "Disable compression of the file contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:71 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:71 msgid "Do not add Table of Contents to book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:72 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:72 msgid "Kindle options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:73 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:73 msgid "Periodical masthead font:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/mobi_output_ui.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/mobi_output_ui.py:74 msgid "Personal Doc tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup.py:35 msgid "Page Setup" msgstr "Настройки на страница" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:116 msgid "&Output profile:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:117 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:117 msgid "Profile description" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:118 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:118 msgid "&Input profile:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:119 msgid "Margins" msgstr "Полета" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:120 msgid "&Left:" msgstr "&Ляво:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:122 msgid "&Top:" msgstr "&Горе:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:124 msgid "&Right:" msgstr "&Дясно:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/page_setup_ui.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/page_setup_ui.py:126 msgid "&Bottom:" msgstr "&Долу:" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input.py:12 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_input.py:12 msgid "PDB Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:32 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_input_ui.py:32 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:43 msgid "Treat each &line as a paragraph" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_input_ui.py:33 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:44 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_input_ui.py:33 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:44 msgid "Assume print formatting" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_output.py:16 msgid "PDB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdb_output_ui.py:36 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdb_output_ui.py:36 msgid "&Format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input.py:12 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input.py:12 msgid "PDF Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:39 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input_ui.py:39 msgid "Line &Un-Wrapping Factor:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_input_ui.py:40 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_input_ui.py:40 msgid "No &Images" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output.py:17 msgid "PDF Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:40 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:43 msgid "&Paper Size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/pdf_output_ui.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:44 msgid "&Orientation:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/rb_output.py:14 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/pdf_output_ui.py:45 +msgid "Preserve &aspect ratio of cover" +msgstr "" + +#: /home/kovid/work/trunk/src/calibre/gui2/convert/rb_output.py:14 msgid "RB Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:75 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:2067 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:2067 msgid "Choose the format to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:81 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:81 msgid "Cannot build regex using the GUI builder without a book." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:81 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:81 msgid "No formats available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder.py:97 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder.py:97 msgid "Open book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder_ui.py:52 msgid "Regex Builder" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder_ui.py:53 msgid "Preview" msgstr "Преглед" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:54 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder_ui.py:54 msgid "Regex:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/regex_builder_ui.py:55 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:117 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/regex_builder_ui.py:55 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:117 msgid "Test" msgstr "Проба" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:171 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single.py:171 msgid "Convert" msgstr "Преобразуване" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single.py:196 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single.py:196 msgid "Options specific to the input format." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:108 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:64 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:91 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:108 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:64 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/progress_ui.py:48 msgid "Dialog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:109 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:109 msgid "&Input format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/single_ui.py:110 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/single_ui.py:110 msgid "Use &saved conversion settings for individual books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:17 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:17 msgid "" "Structure\n" "Detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:19 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:19 msgid "" "Fine tune the detection of chapter headings and other document structure." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:34 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:34 msgid "Detect chapters at (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:35 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:35 msgid "Insert page breaks before (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:37 msgid "Header regular expression:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:40 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:40 msgid "Footer regular expression:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:56 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:71 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:71 msgid "Invalid regular expression" msgstr "Неправилен регулярен израз" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/widgets.py:72 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/widgets.py:72 msgid "Invalid regular expression: %s" msgstr "Неправилен регулярен израз : %s" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:38 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:38 msgid "Invalid XPath" msgstr "Неправилен XPath" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection.py:63 -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:39 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:39 msgid "The XPath expression %s is invalid." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:60 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:60 msgid "Chapter &mark:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:61 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:61 msgid "Remove first &image" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:62 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:62 msgid "Insert &metadata as page at start of book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:63 msgid "&Preprocess input file to possibly improve structure detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:64 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:64 msgid "Remove F&ooter" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/structure_detection_ui.py:65 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/structure_detection_ui.py:65 msgid "Remove H&eader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:16 msgid "" "Table of\n" "Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:18 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:18 msgid "Control the creation/conversion of the Table of Contents." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:29 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:29 msgid "Level &1 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:30 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:30 msgid "Level &2 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc.py:31 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc.py:31 msgid "Level &3 TOC (XPath expression):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:63 msgid "Do not add &detected chapters to the Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:64 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:64 msgid "Number of &links to add to Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:65 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:65 msgid "Chapter &threshold" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:66 msgid "&Force use of auto-generated Table of Contents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/toc_ui.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/toc_ui.py:67 msgid "TOC &Filter:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input.py:12 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input.py:12 msgid "TXT Input" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:45 msgid "Process using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:46 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:46 msgid "" "

Markdown is a simple markup language for text files, that allows for " "advanced formatting. To learn more visit markdown." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_input_ui.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_input_ui.py:47 msgid "Do not insert Table of Contents into output text when using markdown" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output.py:16 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_output.py:16 msgid "TXT Output" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:46 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_output_ui.py:46 msgid "&Line ending style:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_output_ui.py:48 msgid "&Maximum line length:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/txt_output_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/txt_output_ui.py:49 msgid "Force maximum line lenght" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:50 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:65 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:66 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:41 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:57 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:49 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xexp_edit_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:65 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_format_ui.py:41 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/confirm_delete_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:57 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/progress_ui.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/progress_ui.py:50 msgid "TextLabel" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xexp_edit_ui.py:51 msgid "Use a wizard to help construct the XPath expression" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:68 msgid "Match HTML &tags with tag name:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:69 msgid "*" msgstr "*" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:70 msgid "a" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:71 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:71 msgid "br" msgstr "br" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:72 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:72 msgid "div" msgstr "div" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:73 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:73 msgid "h1" msgstr "h1" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:74 msgid "h2" msgstr "h2" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:75 msgid "h3" msgstr "h3" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:76 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:76 msgid "h4" msgstr "h4" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:77 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:77 msgid "h5" msgstr "h5" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:78 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:78 msgid "h6" msgstr "h6" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:79 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:79 msgid "hr" msgstr "hr" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:80 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:80 msgid "span" msgstr "span" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:81 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:81 msgid "Having the &attribute:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:82 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:82 msgid "With &value:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:83 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:83 msgid "(A regular expression)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/convert/xpath_wizard_ui.py:84 +#: /home/kovid/work/trunk/src/calibre/gui2/convert/xpath_wizard_ui.py:84 msgid "" "

For example, to match all h2 tags that have class=\"chapter\", set tag to " "h2, attribute to class and value to " @@ -3668,517 +3686,517 @@ msgid "" "href=\"http://calibre-ebook.com/user_manual/xpath.html\">XPath Tutorial." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:38 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:38 +#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:135 msgid "No details available." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:120 msgid "Device no longer connected." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:208 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:208 msgid "Get device information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:219 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:219 msgid "Get list of books on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:229 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:229 msgid "Get annotations from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:238 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:238 msgid "Send metadata to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:247 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:247 msgid "Upload %d books to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:262 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:262 msgid "Delete books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:279 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:279 msgid "Download books from device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:289 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:289 msgid "View book on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:296 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:296 msgid "and delete from library" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:319 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:319 msgid "Set default send to device action" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:324 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:331 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:333 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:335 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:324 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:331 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:333 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:335 msgid "Email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:346 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:353 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:346 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:353 msgid "Send to main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:348 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:355 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:348 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:355 msgid "Send to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:350 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:357 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:350 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:357 msgid "Send to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:360 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:360 msgid "Send specific format to main memory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:362 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:362 msgid "Send specific format to storage card A" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:364 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:364 msgid "Send specific format to storage card B" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:408 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:408 msgid "Fetch annotations (experimental)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:518 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:518 msgid "selected to send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:523 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:523 msgid "Choose format to send to device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:530 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:530 msgid "No device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:531 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:531 msgid "Cannot send: No device is connected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:538 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:534 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:538 msgid "No card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:535 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:539 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:535 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:539 msgid "Cannot send: Device has no storage card" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:581 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:581 msgid "E-book:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:584 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:584 msgid "Attached, you will find the e-book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:585 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:585 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:177 msgid "by" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:586 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:586 msgid "in the %s format." msgstr "в %s формат." -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:599 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:599 msgid "Sending email to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:629 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:636 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:728 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:788 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:904 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:911 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:629 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:636 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:728 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:788 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:904 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:911 msgid "No suitable formats" msgstr "Няма подходящи формати" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:630 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:630 msgid "Auto convert the following books before sending via email?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:637 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:637 msgid "" "Could not email the following books as no suitable formats were found:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:655 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:655 msgid "Failed to email books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:656 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:656 msgid "Failed to email the following books:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:660 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:660 msgid "Sent by email:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:687 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:687 msgid "News:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:688 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:688 msgid "Attached is the" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:699 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:699 msgid "Sent news to" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:729 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:789 -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:905 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:729 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:789 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:905 msgid "Auto convert the following books before uploading to the device?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:758 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:758 msgid "Sending catalogs to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:819 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:819 msgid "Sending news to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:873 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:873 msgid "Sending books to device." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:912 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:912 msgid "" "Could not upload the following books to the device, as no suitable formats " "were found. Convert the book(s) to a format supported by your device first." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:960 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:960 msgid "No space on device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device.py:961 +#: /home/kovid/work/trunk/src/calibre/gui2/device.py:961 msgid "" "

Cannot upload books to device there is no more free space available " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:75 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:75 msgid "Select available formats and their order for this device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:79 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:79 msgid "Use sub directories" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:81 +#: /home/kovid/work/trunk/src/calibre/gui2/device_drivers/configwidget_ui.py:81 msgid "Save &template:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:114 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:115 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:116 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:373 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1101 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:93 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:373 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:1101 +#: /home/kovid/work/trunk/src/calibre/gui2/status.py:93 msgid "Path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:117 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:118 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:119 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info.py:122 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:372 -#: /home/kovid/work/calibre/src/calibre/gui2/status.py:94 -#: /home/kovid/work/calibre/src/calibre/gui2/tag_view.py:151 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:117 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:118 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:216 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:372 +#: /home/kovid/work/trunk/src/calibre/gui2/status.py:94 +#: /home/kovid/work/trunk/src/calibre/gui2/tag_view.py:151 msgid "Formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:68 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:68 msgid "Fit &cover to view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:69 msgid "&Previous" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/book_info_ui.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/book_info_ui.py:70 msgid "&Next" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog.py:38 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog.py:38 msgid "My Books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:69 -#: /home/kovid/work/calibre/src/calibre/gui2/tools.py:287 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:69 +#: /home/kovid/work/trunk/src/calibre/gui2/tools.py:287 msgid "Generate catalog" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:70 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:70 msgid "Generate catalog for {0} books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:71 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:71 msgid "Catalog &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:72 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:72 msgid "" "Catalog &title (existing catalog with the same title will be replaced):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:73 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:73 msgid "&Send catalog to device automatically" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/catalog_ui.py:74 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/catalog_ui.py:74 msgid "Catalog options" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/choose_format_ui.py:40 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/choose_format_ui.py:40 msgid "Choose Format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:34 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:34 msgid "Set defaults for conversion of comics (CBR/CBZ files)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:49 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf.py:49 msgid "Set options for converting %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:92 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:92 msgid "&Title:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:93 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:93 msgid "&Author(s):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf_ui.py:95 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/comicconf_ui.py:95 msgid "&Profile:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:170 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:170 msgid "%(plugin_type)s %(plugins)s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:171 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:171 msgid "plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:180 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:180 msgid "" "\n" "Customization: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "Conversion" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "General" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:196 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:196 msgid "Interface" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:197 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:197 msgid "Add/Save" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:197 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:197 msgid "" "Email\n" "Delivery" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:198 msgid "Advanced" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:198 msgid "" "Content\n" "Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:198 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:198 msgid "Plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:216 msgid "Auto send" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:216 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:216 msgid "Email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:221 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:221 msgid "Formats to email. The first matching format will be sent." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:222 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:222 msgid "" "If checked, downloaded news will be automatically mailed
to this email " "address (provided it is in one of the listed formats)." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:296 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:296 msgid "new email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:472 msgid "System port selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:473 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:473 msgid "" "The value %d you have chosen for the content server port is a system " -"port. You operating system may not allow the server to run on this " +"port. Your operating system may not allow the server to run on this " "port. To be safe choose a port number larger than 1024." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:492 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:837 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:176 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1538 -#: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:492 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:837 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:176 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:1538 +#: /home/kovid/work/trunk/src/calibre/utils/ipc/job.py:53 msgid "Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:493 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:493 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:496 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:496 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:497 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:497 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:498 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:498 msgid "" "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:549 msgid "No valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:550 msgid "%s is not a valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:553 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:553 msgid "Choose plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:565 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:565 msgid "Plugin cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:566 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:566 msgid "The plugin: %s cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:575 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:575 msgid "Plugin not customizable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:576 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:576 msgid "Plugin: %s does not need customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:584 msgid "Customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:622 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:622 msgid "Cannot remove builtin plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:623 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:623 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:656 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:656 msgid "Error log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:663 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:663 msgid "Access log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:701 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:691 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:701 msgid "Failed to start content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:715 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:586 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:715 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/__init__.py:593 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:723 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:723 msgid "Invalid size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:724 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:724 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:778 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:783 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:778 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:783 msgid "Invalid database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:779 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:779 msgid "Invalid database location " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:780 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:780 msgid "
Must be a directory." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:784 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:784 msgid "Invalid database location.
Cannot write to " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:818 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:818 msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:838 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:838 msgid "Failed to check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:843 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:843 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:844 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/__init__.py:844 msgid "" "The following books had formats listed in the database that are not actually " "available. The entries for the formats have been removed. You should check " @@ -4186,32 +4204,32 @@ msgid "" "folder directly." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:103 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:103 msgid "TabWidget" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:104 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:104 msgid "" "Here you can control how calibre will read metadata from the files you add " "to it. calibre can either read metadata from the contents of the file, or " "from the filename." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:105 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:105 msgid "Read metadata only from &file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:106 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:106 msgid "" "Swap the firstname and lastname of the author. This affects only metadata " "read from file names." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:107 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:107 msgid "&Swap author firstname and lastname" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:108 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:108 msgid "" "If an existing book with a similar title and author is found that does not " "have the format being added, the format is added \n" @@ -4222,280 +4240,280 @@ msgid "" "punctuation, case, etc. Author match is exact." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:112 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:112 msgid "" "If books with similar titles and authors found, &merge the new files " "automatically" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:113 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:113 msgid "&Configure metadata from file name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:114 msgid "&Adding books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:115 msgid "" "Here you can control how calibre will save your books when you click the " "Save to Disk button:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:116 msgid "Save &cover separately" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:117 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:117 msgid "Update &metadata in saved copies" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:118 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:118 msgid "Save metadata in &OPF file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:119 msgid "Convert non-English characters to &English equivalents" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:120 msgid "Format &dates as:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:121 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:121 msgid "File &formats to save:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:122 msgid "Replace space with &underscores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:123 msgid "Change paths to &lowercase" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:124 msgid "&Saving books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:125 msgid "" "Here you can control how calibre will save your books when you click the " "Send to Device button. This setting can be overriden for individual devices " "by customizing the device interface plugins in Preferences->Plugins" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/add_save_ui.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/add_save_ui.py:126 msgid "Sending to &device" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 -#: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:409 -#: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:201 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:504 +#: /home/kovid/work/trunk/src/calibre/gui2/main_ui.py:409 +#: /home/kovid/work/trunk/src/calibre/gui2/viewer/main_ui.py:201 msgid "Preferences" msgstr "Предпочитания" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "" "&Location of ebooks (The ebooks are stored in folders sorted by author and " "metadata is stored in the file metadata.db)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:506 msgid "Browse for the new database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Show notification when &new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Download &social metadata (tags/ratings/etc.) by default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:510 msgid "&Overwrite author and title by default when fetching metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Default network &timeout:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:512 msgid "" "Set the default timeout for network fetches (i.e. anytime we go out to the " "internet to get information)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid " seconds" msgstr " секунди" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Choose &language (requires restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Normal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "High" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Low" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Job &priority:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "Preferred &output format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "Preferred &input format order:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Use &Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Enable system &tray icon (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "Show ¬ifications in system tray" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Search as you type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:528 msgid "Automatically send downloaded &news to ebook reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:529 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Toolbar" msgstr "Лента с инструменти" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "Large" msgstr "Голям" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Medium" msgstr "Среден" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "Small" msgstr "Малък" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "&Button size in toolbar" msgstr "Размер на &бутоните в лентата с инструменти" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:536 msgid "Show &text in toolbar buttons" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:537 msgid "Select visible &columns in library view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:540 msgid "Use internal &viewer for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:541 msgid "Add an email address to which to send books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:542 msgid "&Add email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "Make &default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:544 msgid "&Remove email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "" "calibre can send your books to you (or your reader) by email. Emails will be " "automatically sent for downloaded news to all email addresses that have Auto-" "send checked." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "&Install command line tools" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "Open calibre &configuration directory" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Limit the max. simultaneous jobs to the available CPU &cores" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "Debug &device detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:552 msgid "" "calibre contains a network server that allows you to access your book " "collection using a browser from anywhere in the world. Any changes to the " "settings will only take effect after a server restart." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:553 msgid "Server &port:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:212 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:58 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:212 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "&Потребителско име:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:213 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:59 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:213 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "П&арола:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "" "If you leave the password blank, anyone will be able to access your book " "collection using the web interface." @@ -4503,48 +4521,48 @@ msgstr "" "Ако оставите празно полето с паролата, всеки ще може да достъпи вашата " "колекция от книга през уеб интерфейса." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "" "The maximum size (widthxheight) for displayed covers. Larger covers are " "resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:214 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:559 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:60 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:214 msgid "&Show password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:560 msgid "Max. &OPDS items per query:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Start Server" msgstr "&Стартиране на Сървъра" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:562 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:562 msgid "St&op Server" msgstr "С&пиране на Сървъра" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:563 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:563 msgid "&Test Server" msgstr "&Тестване на Сървъра" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:564 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:564 msgid "Run server &automatically on startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:565 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:565 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:566 -#: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:566 +#: /home/kovid/work/trunk/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as " "calibre is running.\n" @@ -4554,7 +4572,7 @@ msgid "" "the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:568 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:568 msgid "" "Here you can customize the behavior of Calibre by controlling what plugins " "it uses." @@ -4562,115 +4580,115 @@ msgstr "" "Тук можете да персонализирате поведението на Calibre, контролирайки " "приставките, които той използва." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:569 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:569 msgid "Enable/&Disable plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:570 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:570 msgid "&Customize plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:571 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:571 msgid "&Remove plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:572 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:572 msgid "Add new plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:573 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:573 msgid "Plugin &file:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:575 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/config_ui.py:575 msgid "&Add" msgstr "&Добавяне" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:125 msgid "Create Tag-based Column" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:126 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:126 msgid "Lookup name" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:127 msgid "Column heading" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:128 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:128 msgid "Column type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:129 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:129 msgid "Use brackets" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:130 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:130 msgid "Values can be edited" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:131 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:131 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:133 msgid "Yes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:132 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:134 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:134 msgid "No" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:135 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:135 msgid "Text" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:136 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:136 msgid "Number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:177 -#: /home/kovid/work/calibre/src/calibre/gui2/library.py:1162 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:137 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:177 +#: /home/kovid/work/trunk/src/calibre/gui2/library.py:1162 msgid "Date" msgstr "Дата" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:138 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:138 msgid "Tag on book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:139 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:139 msgid "Explanation text added in create_ct_column.py" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:140 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/create_ct_column_ui.py:140 msgid "Create and edit tag-based columns" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:21 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/device_debug.py:21 msgid "Getting debug information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:22 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/device_debug.py:22 msgid "Copy to &clipboard" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/device_debug.py:24 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/device_debug.py:24 msgid "Debug device detection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:44 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template.py:44 msgid "Invalid template" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template.py:45 msgid "The template %s is invalid:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template_ui.py:42 msgid "Save &template" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:43 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template_ui.py:43 msgid "" "By adjusting the template below, you can control what folders the files are " "saved in and what filenames they are given. You can use the / character to " @@ -4679,68 +4697,68 @@ msgid "" "by the empty string." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/save_template_ui.py:44 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/save_template_ui.py:44 msgid "Available variables:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/social.py:34 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/config/social.py:34 msgid "Downloading social metadata, please wait..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/confirm_delete_ui.py:48 msgid "Are you sure?" msgstr "Сигурни ли сте?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/confirm_delete_ui.py:50 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/confirm_delete_ui.py:50 msgid "&Show this warning again" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/conversion_error_ui.py:42 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/conversion_error_ui.py:42 msgid "ERROR" msgstr "ГРЕШКА" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:63 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:63 msgid "Author Sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:65 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:65 msgid "ISBN" msgstr "ISBN" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:165 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:165 msgid "Finding metadata..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:179 msgid "Could not find metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:180 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:180 msgid "The metadata download seems to have stalled. Try again later." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:189 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:189 msgid "Warning" msgstr "Внимание" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:190 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:190 msgid "Could not fetch metadata from:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:194 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:194 msgid "No metadata found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata.py:195 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata.py:195 msgid "" "No metadata found, try adjusting the title and author or the ISBN key." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:85 msgid "Fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:86 msgid "" "

calibre can find metadata for your books from two locations: Google " "Books and isbndb.com.

To use isbndb.com you must sign up for a " @@ -4748,128 +4766,128 @@ msgid "" "below." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:87 msgid "&Access Key:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:88 msgid "Fetch" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:89 msgid "Matches" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:90 msgid "" "Select the book that most closely matches your copy from the list below" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:91 msgid "Download &social metadata (tags/rating/etc.) for the selected book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/fetch_metadata_ui.py:92 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/fetch_metadata_ui.py:92 msgid "Overwrite author and title with author and title of selected book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/job_view_ui.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/job_view_ui.py:37 msgid "Details of job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:44 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/jobs_ui.py:44 msgid "Active Jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/jobs_ui.py:45 msgid "&Stop selected job" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:46 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/jobs_ui.py:46 msgid "Show job &details" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/jobs_ui.py:47 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/jobs_ui.py:47 msgid "Stop &all jobs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk.py:22 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk.py:22 msgid "Editing meta information for %d books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:141 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:143 msgid "Edit Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:142 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:355 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:355 msgid "Meta information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:144 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 msgid "A&utomatically set author sort" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:145 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 msgid "Author s&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:146 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:362 msgid "" "Specify how the author(s) of this book should be sorted. For example Charles " "Dickens should be sorted as Dickens, Charles." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:147 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:365 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:365 msgid "&Rating:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:148 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:149 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:366 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:367 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:366 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:367 msgid "Rating of this book. 0-5 stars" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:150 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:152 msgid "No change" msgstr "Без промяна" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:151 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:368 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:368 msgid " stars" msgstr " звезди" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:153 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 msgid "Add ta&gs: " msgstr "Добавяне на &етикети: " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:155 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:156 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:372 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:373 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:372 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:373 msgid "Open Tag Editor" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:157 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:159 msgid "&Remove tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:158 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:160 msgid "Comma separated list of tags to remove from the books. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:162 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164 msgid "Remove &format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:163 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:165 msgid "&Swap title and author" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:164 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:166 msgid "" "Selected books will be automatically numbered,\n" "in the order you selected them.\n" @@ -4877,618 +4895,618 @@ msgid "" "Book A will have series number 1 and Book B series number 2." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_bulk_ui.py:168 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_bulk_ui.py:170 msgid "Automatically number books in this series" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:123 msgid "Not a valid picture" msgstr "Невалидна картинка" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:136 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:136 msgid "Choose formats for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:137 -#: /home/kovid/work/calibre/src/calibre/gui2/ui.py:1284 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:137 +#: /home/kovid/work/trunk/src/calibre/gui2/ui.py:1284 msgid "Books" msgstr "Книги" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:165 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:165 msgid "No permission" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:166 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:166 msgid "You do not have permission to read the following files:" msgstr "Нямате права за четене на следните файлове:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:193 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:194 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:193 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:194 msgid "No format selected" msgstr "Няма избран формат" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:205 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:205 msgid "Could not read metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:206 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:206 msgid "Could not read metadata from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:254 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:260 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:254 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:260 msgid "Could not read cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:255 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:255 msgid "Could not read cover from %s format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:261 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:261 msgid "The cover in the %s format is invalid" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:298 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:298 msgid "Abort the editing of all remaining books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:413 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:418 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:413 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:418 msgid "This ISBN number is valid" msgstr "Това е валиден ISBN номер" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:421 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:421 msgid "This ISBN number is invalid" msgstr "Това е невалиден ISBN номер" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:517 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:517 msgid "Downloading cover..." msgstr "Изтегляне на обложка..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:529 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:534 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:540 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:529 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:534 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:540 msgid "Cannot fetch cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:530 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:541 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:530 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:541 msgid "Could not fetch cover.
" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:531 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:531 msgid "The download timed out." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:535 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:535 msgid "Could not find cover for this book. Try specifying the ISBN first." msgstr "" "За тази книга не може да бъде намерена обложка. Опитайте се да посочите ISBN " "." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:547 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:547 msgid "Bad cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:548 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:548 msgid "The cover is not a valid picture" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:581 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:581 msgid "There were errors" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:582 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:582 msgid "There were errors downloading social metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:611 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:611 msgid "Cannot fetch metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:612 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:612 msgid "You must specify at least one of ISBN, Title, Authors or Publisher" msgstr "" "Трябва да посочите поне едно от ISBN, Заглавие, Автори или Производител" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:681 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:681 msgid "Permission denied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single.py:682 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single.py:682 msgid "Could not open %s. Is it being used by another program?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:354 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:354 msgid "Edit Meta Information" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:358 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:358 msgid "Swap the author and title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:361 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:361 msgid "Author S&ort: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:363 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:363 msgid "" "Automatically create the author sort entry based on the current author entry" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:377 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:377 msgid "Remove unused series (Series that have no books)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:379 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:379 msgid "IS&BN:" msgstr "IS&BN:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:380 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:380 msgid "Publishe&d:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:383 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:383 msgid "dd MMM yyyy" msgstr "dd MMM yyyy" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:384 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:384 msgid "&Date:" msgstr "&Дата:" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:385 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:385 msgid "&Comments" msgstr "&Коментари" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:386 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:386 msgid "&Fetch metadata from server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:387 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:387 msgid "Available Formats" msgstr "Налични формати" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:388 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:388 msgid "Add a new format for this book to the database" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:390 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:390 msgid "Remove the selected formats for this book from the database." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:392 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:392 msgid "Set the cover for the book from the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:394 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:394 msgid "Update metadata from the metadata in the selected format" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:399 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:399 msgid "Reset cover to default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:401 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/metadata_single_ui.py:401 msgid "Download &cover" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:56 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/password_ui.py:56 msgid "Password needed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/progress.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/progress.py:52 msgid "Aborting..." msgstr "Прекъсване..." -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:120 msgid "Need username and password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:121 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:121 msgid "You must provide a username and/or password to use this news source." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:172 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:172 msgid "Created by: " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:179 msgid "Last downloaded: never" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:194 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:194 msgid "%d days, %d hours and %d minutes ago" msgstr "преди %d дни, %d часа и %d минути" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:196 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:196 msgid "Last downloaded" msgstr "Последно изтегляне" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:217 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:192 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:217 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:192 msgid "Schedule news download" msgstr "График за изтегляне на новини" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:220 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:220 msgid "Add a custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:225 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:225 msgid "Download all scheduled new sources" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:322 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:322 msgid "No internet connection" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler.py:323 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler.py:323 msgid "Cannot download news as no internet connection is active" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:193 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:278 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:193 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:278 msgid "Recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:194 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:194 msgid "Download all scheduled recipes at once" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:195 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:195 msgid "Download &all scheduled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:196 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:196 msgid "blurb" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:197 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:197 msgid "&Schedule for download:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:198 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:208 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:198 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:208 msgid "Every " msgstr "Всеки " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:199 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:199 msgid "day" msgstr "ден" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:200 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:200 msgid "Monday" msgstr "Понеделник" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:201 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:201 msgid "Tuesday" msgstr "Вторник" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:202 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:202 msgid "Wednesday" msgstr "Сряда" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:203 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:203 msgid "Thursday" msgstr "Четвъртък" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:204 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:204 msgid "Friday" msgstr "Петък" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:205 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:205 msgid "Saturday" msgstr "Събота" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:206 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:206 msgid "Sunday" msgstr "Неделя" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:207 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:207 msgid "at" msgstr "в" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:209 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:209 msgid "" "Interval at which to download this recipe. A value of zero means that the " "recipe will be downloaded every hour." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:210 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:222 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:263 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:210 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:222 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:263 msgid " days" msgstr " дни" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:211 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:211 msgid "&Account" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:215 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:215 msgid "For the scheduling to work, you must leave calibre running." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:216 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:216 msgid "&Schedule" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:217 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:217 msgid "Add &title as tag" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:218 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:218 msgid "&Extra tags:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:219 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:219 msgid "&Advanced" msgstr "Д&опълнителни" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:220 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:220 msgid "&Download now" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:221 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:221 msgid "" "Delete downloaded news older than the specified number of days. Set to zero " "to disable." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:223 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/scheduler_ui.py:223 msgid "Delete downloaded news older than " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:36 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_item_ui.py:36 msgid "contains" msgstr "съдържа" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:37 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_item_ui.py:37 msgid "The text to search for. It is interpreted as a regular expression." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:38 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_item_ui.py:38 msgid "" "

Negate this match. That is, only return results that do not match " "this query." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_item_ui.py:39 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_item_ui.py:39 msgid "Negate" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:113 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:113 msgid "Advanced Search" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:114 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:114 msgid "Find entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:115 msgid "&All these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:116 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:116 msgid "This exact &phrase:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:117 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:117 msgid "&One or more of these words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:118 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:118 msgid "But dont show entries that have..." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:119 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:119 msgid "Any of these &unwanted words:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:120 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:120 msgid "What kind of match to use:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:121 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:121 msgid "Contains: the word or phrase matches anywhere in the metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:122 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:122 msgid "Equals: the word or phrase must match an entire metadata field" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:123 msgid "" "Regular expression: the expression must match anywhere in the metadata" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:124 msgid " " msgstr " " -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/search_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/search_ui.py:125 msgid "" "See the User Manual for more help" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/select_formats.py:45 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/select_formats.py:45 msgid "Choose formats" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:66 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor.py:66 msgid "Are your sure?" msgstr "Сигурни ли сте?" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor.py:67 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor.py:67 msgid "" "The following tags are used by one or more books. Are you certain you want " "to delete them?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:123 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:123 msgid "Tag Editor" msgstr "Редактор на етикети" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:124 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:124 msgid "A&vailable tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:125 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:125 msgid "" "Delete tag from database. This will unapply the tag from all books and then " "remove it from the database." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:127 msgid "Apply tag to current book" msgstr "Добавяне на етикет към текущата книга" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:129 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:129 msgid "A&pplied tags" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:130 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:130 msgid "Unapply (remove) tag from current book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:132 msgid "&Add tag:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:133 msgid "" "If the tag you want is not in the available list, you can add it here. " "Accepts a comma separated list of tags." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/tag_editor_ui.py:134 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/tag_editor_ui.py:134 msgid "Add tag to available tags and apply it to current book" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:51 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/test_email_ui.py:51 msgid "Test email settings" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:52 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/test_email_ui.py:52 msgid "Send test mail from %s to:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/test_email_ui.py:53 -#: /home/kovid/work/calibre/src/calibre/gui2/filename_pattern_ui.py:115 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/test_email_ui.py:53 +#: /home/kovid/work/trunk/src/calibre/gui2/filename_pattern_ui.py:115 msgid "&Test" msgstr "Про&ба" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:127 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:127 msgid "No recipe selected" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:132 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:132 msgid "The attached file: %s is a recipe to download %s." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:133 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:133 msgid "Recipe for " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:150 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:161 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:255 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:150 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:161 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:255 msgid "Switch to Advanced mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:156 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:164 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:156 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:164 msgid "Switch to Basic mode" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:174 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:174 msgid "Feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:175 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:175 msgid "The feed must have a title" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:179 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:179 msgid "Feed must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:180 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:180 msgid "The feed %s must have a URL" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:185 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:185 msgid "Already exists" msgstr "Вече съществува" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:186 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:186 msgid "This feed has already been added to the recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:227 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:236 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:286 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:227 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:236 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:286 msgid "Invalid input" msgstr "Невалидни входящи данни" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:228 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:237 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:287 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:228 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:237 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:287 msgid "

Could not create recipe. Error:
%s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:241 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:263 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:290 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:241 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:263 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:290 msgid "Replace recipe?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:242 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:264 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:291 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:242 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:264 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:291 msgid "A custom recipe named %s already exists. Do you want to replace it?" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:257 msgid "Pick recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:257 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:257 msgid "Pick the recipe to customize" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles.py:277 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles.py:277 msgid "Choose a recipe file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:248 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:248 msgid "Add custom news source" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:249 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:249 msgid "Available user recipes" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:250 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:250 msgid "Add/Update &recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:251 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:251 msgid "&Remove recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:252 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:252 msgid "&Share recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:253 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:253 msgid "Customize &builtin recipe" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:254 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:254 msgid "&Load recipe from file" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/user_profiles_ui.py:256 +#: /home/kovid/work/trunk/src/calibre/gui2/dialogs/user_profiles_ui.py:256 msgid "" "